0

我有一个场景,需要我首先将表中的列值范围设置为 Null,然后添加逻辑以使用前一个语句之后的语句重新计算新NULL值。最后,我运行我的最终比较脚本(在光标内),它将新值插入到表中。UpdateUpdate

我需要GO在每个主要命令之间使用命令吗?

例子:

Drop Table1

Update Table2
Set Col1=NULL,Col2=NULL

Insert into Table3 (Col1,Col2)

在每个语句之间使用GO一个要求,因为有时这可行,但最近它一直给我带来问题?

谢谢,

4

1 回答 1

1

如上所述,GO不是 SQL 语法,而是 SSMS 分隔符。

如果您确实需要在单个 SP 中执行所有这些操作,则可以使用动态 SQL。在 SQL 服务器中执行动态 SQL 有两种能力" sp_executesqlexecute (command)

可以在此处找到根据动态 SQL 的其他信息:http: //www.sommarskog.se/dynamic_sql.html或此处: http: //www.codeproject.com/Articles/20815/Building-Dynamic-SQL-In-存储过程

在这种情况下,您的脚本将如下所示:

create proc myProc
as
declare @sql nvarchar(max);

set @sql = N'Drop Table1';
exec sp_executesql @sql;

set @sql = N'Update Table2
Set Col1=NULL,Col2=NULL';
exec sp_executesql @sql;

set @sql = N'Insert into Table3 (Col1,Col2)';
exec sp_executesql @sql;
go

但需要检查是否真的需要按照上述方式执行上述操作...

于 2013-11-11T17:06:36.563 回答