簡體   English   中英

在SQL Server 2008 R2的單個存儲過程中使用更新,刪除和插入語句

[英]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_executesqlexecute(命令)

可以在以下位置找到根據動態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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM