2008-11-18 69 views
3

我正在針對SQL Server的單個批處理中執行多個離散查詢。例如:從批處理SQL命令(SQL Server)中檢索「輸出消息」

 
update tableX set colA = 'freedom'; 

select lastName from customers; 

insert into tableY (a,b,c) values (x,y,z); 

現在,我想捕捉的結果在DataSet(從select語句),這是很容易做的......但我怎麼也捕捉類似該命令的「元」響應的方式查詢分析器/ SQL MGT工作室做時,它會顯示「信息」選項卡,並diplays類似於:

 
(1 Row affected) 
(2 Rows Updated) 

回答

3

我的建議是使用@@ ROWCOUNT變量這一點。通常,當我在做這幾樣的命令,如果我想陷阱兩個潛在的錯誤,影響了行,我做

declare @rowsAffected int, @error int 

select * from sometable 
    select @rowsAffected = @@rowcount, @error = @@error 

if @@error <> 0 goto errorCleanup 
1

尼克是正確的建議@@ROWCOUNT - 事實上,作爲例行公事我總是使用SET NOCOUNT ON,它有一個(小)性能優勢 - 但更重要的是,這個細節是一個實現細節 - 所以你的代碼不應該在意...

如果你想返回一個值的行更新),使用以下任何:

  • 返回值
  • 輸出參數
  • SELECT語句

最後擁有最開銷