2010-07-25 38 views
1

只是好奇是否可靠的方式來做到以下幾點:我需要得到一些價值,然後更新它,最好在一個批次。C#和SQL Server 2005:返回值和更新在一個批次

SELECT X FROM Y //will it be returned if executed in one batch? 
UPDATE Y SET X... 

執行爲讀者?如果有UPDATE語句,我不確定它是否會返回。還有一個額外的問題,如果我需要根據一些聲明是否成功返回true或false(或任何其他值對),該怎麼辦?

+0

如果您顯示要執行的特定SQL或其編輯示例,而不是僞代碼,則會更容易給出答案。另外,你的目標是什麼數據庫服務器? Oracle,Sql Server,MySql? =) – Rob 2010-07-25 17:19:20

+0

是否要返回先前更新過的數據或已更新的數據?或者只是其他數據? – 2010-07-25 17:20:27

回答

0

你的問題有點不清楚。如果問題是關於如何更新和選擇一個語句,而不是看到gbn的答案。

如果問題是關於如何執行兩個不同的陳述,除可以使用開始末端塊:

begin 

    select * from x 

    update y set a = ... 

end 

您可以設置的CommandType文字和使用命令的ExecuteReader方法。這兩個語句都將被執行,您將從select語句獲得結果集。

+0

一個問題:爲什麼要使用終止塊?我看不出有什麼區別。它只是爲了使它「原子」? – Thomas 2010-07-25 17:53:55

+0

是的,它是使它成爲原子。此外,我不確定它會在沒有開始/結束塊的情況下工作(但也許我將它與其他數據庫混淆了)。 – 2010-07-25 17:57:39

2
UPDATE Y 
OUTPUT --use this 
SET X... 

OUTPUT子句允許這爲SQL Server 2005+(我用C#猜測)