レガシー スタイルのエラー トラップを備えた古いストアド プロシージャが多数あります。先日 1 つを変更し、新しい TRY...CATCH ブロックを含めました。ストアド プロシージャは、TRY/CATCH の後に停止し、従来のブロックにエラーがあったかのように返されました。
私が入れたら
SELECT NULL
2 つの間ですべて正常に動作します。なぜこれが起こっているのか知っている人はいますか?
--BEGIN NEW ERROR TRAP--
BEGIN TRY
Do stuff...
END TRY
BEGIN CATCH
END CATCH
--END NEW ERROR TRAP---
----------------- OLD SCHOOL TRAP BEGIN -----------------
SELECT @spERROR = @@ERROR ,
@spROWCOUNT = @@ROWCOUNT
SET @spRETURN = @spRETURN + 1
IF ( @spROWCOUNT <= 0
OR @spERROR <> 0
)
SET @spRETURN = 0 - @spRETURN
IF ( @spROWCOUNT <= 0
OR @spERROR <> 0
)
RETURN @spRETURN
SELECT @spROWCOUNT = -1 ,
@spERROR = -1
------------------ OLD SCHOOL ERROR TRAP END ------------------