ERROR_LINE


エラーの発生した行番号を返す関数。他にもERROR_MESSAGE,ERROR_PROCEDURE等がある。
ストアドでエラーが発生した場合の原因調査に便利。


テスト用スタブ

ALTER PROCEDURE procTest @param1              int 
AS 

   SET @param1 = 1/ 1
   SET @param1 = 1/ 0
   
   return 0
   


テスト用ドライバ

DECLARE @RC int
DECLARE @param1 int

-- 方法: パラメータ値をここに指定します。

BEGIN TRY 

EXECUTE @RC = [sunliveDB].[dbo].[procTest] 
   @param1

END TRY 

BEGIN CATCH 

  SELECT          ERROR_LINE(),
                  ERROR_MESSAGE(),
                  ERROR_PROCEDURE(),
                  ERROR_NUMBER()
  
END CATCH

上記の場合、呼び出し先のプロシージャでTry Catchを記述していないので
呼び出し元でError_xx関数での値を取得することができるが、
呼び出し先のプロシージャでTry Catchを記述して場合は
呼び出し元では取得できないのでパラメタで返したりする仕組みが必要。
(最初のTry Catchでしか取得できない)



動作確認環境:SQL Server 2008 Enterprise