2012-04-19 7 views
1

をキャッチした後...のSQLServer 2008 - ストアドプロシージャの戻り値例外以下SP考える

これを与えて実行
CREATE PROCEDURE [dbo].[trytest1] 

AS 

-- SET NOCOUNT ON added to prevent extra result sets from 
-- interfering with SELECT statements. 
SET NOCOUNT ON; 

SELECT 'Testing 1' 

DECLARE @int1 INTEGER 
DECLARE @int2 INTEGER 
DECLARE @int3 INTEGER 

SET @int1 = 0 
SET @int2 = 0 

    BEGIN TRY 
     SELECT 'Testing 2' 

     SET @int3 = @int1/@int2 

     SELECT 'Testing 3' 
    END TRY 

    BEGIN CATCH 
     SELECT 'Testing 4' 
    END CATCH 

SET @int3 = @int1 + @int2 
SELECT 'Testing 5' 

...

テスト1

テスト2

試験4

試験5

戻り値は-6

キャッチは、ゼロ除算をキャッチしますが、実行は、catchブロック イム後も継続好奇心、なぜクエリが正常に実行して は通常trycatch後も継続にもかかわらず、戻り値は-6。永遠に-6あるでしょうか?

そして、私はここでは、単に好奇心が強い一方で、(すなわち、「テスト3」を選択)

おかげ

すべての例外処理メカニズムに関する標準的な動作をだ
+0

[SQL Serverのストアドプロシージャの戻りコード風変わりの可能重複](http://stackoverflow.com/questions/2965211/sql-server-stored-procedure-return-code-oddity) – gbn

+0

OK - 情報はありました。どうもありがとうございました。 –

答えて

1

をtryブロックで実行を継続することが可能です。間にTRYとCATCHとコードがあります。コード内に例外がある場合、実行を停止してCATCHブロックに移動します。

SELECT 'Testing 3'を実行する場合は、TRY ... CATCHブロックの外側に配置する必要があります。あなたはPROC上で何かを実行したくない場合は

は、あなたがTRY ... CATCHブロックの上にすべてをかけるOR catchブロックの実行を存在するいずれかの

+0

ありがとうございました –

+0

あなたの問題を解決しましたか? – Diego

+0

申し訳ありません。忘れてしまった。はい。ありがとう。 –

関連する問題