1

私はいくつかのSQLを持っています:

BEGIN TRY
    DECLARE @RowsInserted int;
    SET @RowsInserted = @@ROWCOUNT;
    SELECT @RowsInserted+'test' as [SUCCESS];
END TRY

BEGIN CATCH    
    SELECT ERROR_MESSAGE() AS [ERROR]    
END CATCH

驚いたことに、これは実際には 2 つのバッチ (データ セット) を生成します。

ここに画像の説明を入力

GO仕組み上、バッチを分割することはできませんTRY...CATCH。エラーが発生した場合、常にダミーの結果セットが存在するということですか?

私が本当にやりたいのは、SUCCESS バッチ (またはキャッチされたときにこのような他のダミー バッチ) を破棄することです。そうしないと、いくつかのガベージ バッチをナビゲートして、catch ステートメントでエラー報告バッチを見つける必要があり、混乱を招くようです。

4

2 に答える 2

0

私はそれが可能だとは思いません.結果セットへの参照は、列挙が開始される前にクライアントに返され、レコードの評価でエラーが発生することがわかる前に返されます.

于 2013-02-08T14:31:52.803 に答える