set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER procedure [dbo].[check_proc](@sql varchar(1000))
AS
BEGIN
declare @testsql nvarchar(max),@result int
set @testsql = N'set parseonly on; ' + @sql
exec @result=sp_executesql @testsql
if @result = 0
begin
select 1;
end
else
begin
select 0;
end
END
set QUOTED_IDENTIFIER ON
go
ALTER procedure [dbo].[check_proc](@sql varchar(1000))
AS
BEGIN
declare @testsql nvarchar(max),@result int
set @testsql = N'set parseonly on; ' + @sql
exec @result=sp_executesql @testsql
if @result = 0
begin
select 1;
end
else
begin
select 0;
end
END
该博客介绍了一个SQL Server存储过程,用于不执行SQL语句而仅进行语法检查。通过设置`ANSI_NULLS`和`QUOTED_IDENTIFIER`,然后使用`sp_executesql`并设置`parseonly`选项,可以实现这一功能。存储过程返回1表示语法正确,返回0则表示存在语法错误。
1607

被折叠的 条评论
为什么被折叠?



