ちょっとした動的 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
';