0

我已经制作了一个存储过程,我希望它根据 SQL 语句是否有效返回 true 或 false。

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

SET NOEXEC ON
Exec @SQL 
SET NOEXEC OFF

这是我到目前为止所拥有的,当语句有效时,在 SQL Server 管理工作室中,结果是命令成功完成。如果语句 i 无效,它会返回错误消息,EG 'Selec' 附近的语法不正确。

首先,如果语句有效,我如何返回 false 的值 True。

其次,我怎样才能返回无效的错误信息?

我在想类似的事情:

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 回答