0

ストアド プロシージャを作成しましたが、SQL ステートメントが有効かどうかに応じて true または false を返すようにしたいと考えています。

Create PROCEDURE [dbo].[CheckSQLStatement]
@SQL varchar(8000)
AS

SET NOEXEC ON
Exec @SQL 
SET NOEXEC OFF

これまでのところ、ステートメントが有効な場合、SQL Server 管理スタジオでは、結果はCommand(s) completed successfully です。ステートメントが無効な場合は、EG Incorrect syntax near 'Select' というエラー メッセージが返されます。

まず、ステートメントが有効な場合、どのように値 True の false を返すことができますか。

次に、無効なエラー メッセージを返すにはどうすればよいですか?

私は次のようなことを考えていました:

Create PROCEDURE [dbo].[CheckSQLStatement]
@SQL varchar(8000),
@IsValid bit OUTPUT,
@text NVARCHAR(1000)OUTPUT
AS

 SET NOEXEC ON
 Exec @SQL 
 SET NOEXEC OFF

Select @Isvalid
Select @Text

しかし、これらの値を設定する方法がわかりませんか?

より良い方法はありますか?

事前に感謝します。

4

1 に答える 1

1

私もこの問題に取り組んでいましたが、私の解決策には以下が含まれていました

   BEGIN TRANSACTION
   BEGIN TRY
       ... execute sql
       ROLLBACK TRANSACTION
   END TRY
   BEGIN CATCH
      WHILE @@TRANCOUNT > 0
         ROLLBACK

      ... check ERROR_*() functions
   END CATCH

完全な TSQL コードは私のブログにあり、そのためのアプリがあります。

于 2012-07-12T07:48:54.840 に答える