エラーの発生した行番号を返す関数。他にも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