2017-06-05 11 views
0

SQL Serverストアドプロシージャで実行された最後のSQLステートメントのステータスをチェックする方法はありますか。ストアドプロシージャで実行された最後のSQLステートメントのステータスを確認します。

コード:

SET @SQLStmt = N'CREATE CLUSTERED COLUMNSTORE INDEX CCSI ON '+ @DBName +N'.dbo.' + @ResultTableName + N' WITH (DROP_EXISTING = OFF)' 

EXEC dbo.pCOMMON_PrintVariable ': Create Clustered Columnstore Index: ', @SQLStmt 
EXEC sp_executesql @SQLStmt  

は、上記のステートメントの状態を確認し、これらの文の後にいくつかのコードをトリガしたいと思います。

+0

あなたが状況とはどういう意味ですか? –

+0

ステータス - 正常に実行されたか、失敗しましたか? – Teja

+0

ストアドプロシージャでDDLを見始めると、深刻なアーキテクチャ上の問題があることが懸念されます。さらに、エラーを無視したいときはさらにそうです。これは、何かがここから遠く離れていることを示しています。 –

答えて

0

チェックしたい文をTRY..CATCHブロックに置くことができます。失敗した場合は、CATCHブロックに移動します。成功すると、その次のステートメントに移動します。

サンプル擬似コード:

BEGIN TRY 
    SET @SQLStmt = N'CREATE CLUSTERED COLUMNSTORE INDEX CCSI ON '+ @DBName +N'.dbo.' + @ResultTableName + N' WITH (DROP_EXISTING = OFF)' 

    EXEC dbo.pCOMMON_PrintVariable ': Create Clustered Columnstore Index: ', @SQLStmt 
    EXEC sp_executesql @SQLStmt 

    --do whatever you want to do if the above statements succeed 
END TRY 

BEGIN CATCH 
    --do whatever you want to do if the above statements fail 
END CATCH 
+0

実行可能ないくつかのサンプルコードを投稿できます..ありがとう。 – Teja

+0

このステートメントが失敗した場合、私は何もしたくありません。私は上記のexec文が成功した場合にのみテーブルにデータを挿入したいのですが、それ以外の場合はスキップします。 – Teja

+0

その後、CATCHブロックには何も入れないでください。 –

関連する問題