我正在尝试为一些动态 SQL 构建自定义错误消息字符串。不包含在动态 SQL 中时看起来像这样:
SET @message = 'EXCEPTION: Msg ' + COALESCE(CAST(ERROR_NUMBER() AS NVARCHAR(20)), '[NULL]') + ', ' +
'Level ' + COALESCE(CAST(ERROR_SEVERITY() AS NVARCHAR(20)), '[NULL]') + ', ' +
'State ' + COALESCE(CAST(ERROR_STATE() AS NVARCHAR(20)), '[NULL]') + ', ' +
'Procedure ' + COALESCE(@PROCEDURE_NAME, '[NULL]') + ', ' +
'Line ' + COALESCE(CAST(ERROR_LINE() AS NVARCHAR(20)), '[NULL]') + ', ' +
'Message: ' + COALESCE(ERROR_MESSAGE(), '[NULL]') ;
我在获取引号时遇到了麻烦,以便在动态 SQL 中执行它时看起来像这样。以下报价应如何排列:
EXEC @sql = 'BEGIN TRY
...
END TRY
BEGIN CATCH
DECLARE @PROCEDURE_NAME NVARCHAR(128);
SET @PROCEDURE_NAME = OBJECT_NAME(@@PROCID);
END CATCH
';