![](/img/trans.png)
[英]SQL Server 2008: Insert variable into DML statements using Stored Procedure
[英]Using Update, Delete and Insert Statements in a single Stored Procedure on SQL Server 2008 R2
我有一種情況,要求我首先將表中的列值范圍設置為Null,然后添加邏輯以使用上一條Update
語句之后的Update
語句重新計算新的NULL
值。 最后,我運行最終的比較腳本(在光標內),該腳本將新值插入表中。
我需要在每個主要命令之間使用GO
命令嗎?
例:
Drop Table1
Update Table2
Set Col1=NULL,Col2=NULL
Insert into Table3 (Col1,Col2)
在每個語句之間使用GO
是一項要求,因為有時這可行,但最近卻給我帶來了問題?
謝謝,
如上所述, GO
不是SQL語法,而是SSMS分隔符。
如果確實需要在單個SP中執行所有這些操作,則可以使用動態SQL。 “在SQL Server中執行動態SQL的兩種能力” sp_executesql和execute(命令) 。
可以在以下位置找到根據動態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
但是需要檢查您是否真的需要以上述方式執行上述操作...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.