-1
我遇到一些奇怪的行爲與OSQL,並將不勝感激任何幫助。@@ ROWCOUNT在OSQL返回不同的結果比在TSQL
我有一個批處理文件,將數據庫字段從一列複製到另一個。下面是一個示例腳本:
SET NOCOUNT ON;
UPDATE Table1 SET Table1.EmailAddress = Table2.GenericField FROM Table1
INNER JOIN Table2 ON Table1.ID = Table2.ID WHERE GenericField LIKE '%@%.%'
AND EmailAddress IS NULL;
SELECT @@ROWCOUNT;
假設所有的EmailAddress的字段是NOT NULL了,我希望更新語句返回0。
- 例1的@@ ROWCOUNT:
在查詢分析器中運行上述查詢爲@@ ROWCOUNT提供了0。那很好。
- 實施例2:
TEST.SQL包含如上述完全相同的SQL語句。如果我用下面的語句OSQL,我公司還針對@@ ROWCOUNT得到一個0:
osql.exe -D TestConn -U UserID -P pwd -s , -h-1 -w 100 -n^
-i "C:\Scripts\Test.sql"
- 例3:
如果非要在批處理文件,而不是一個SQL語句SQL文件,我得到的一個@@ ROWCOUNT:
osql.exe -D TestConn -U UserID -P pwd -s , -h-1 -w 100 -n -Q^
"SET NOCOUNT ON;
UPDATE Table1 SET Table1.EmailAddress = Table2.GenericField FROM Table1
INNER JOIN Table2 ON Table1.ID = Table2.ID WHERE GenericField LIKE '%@%.%'
AND EmailAddress IS NULL;
SELECT @@ROWCOUNT;"
難道我一個開關設置錯誤,例如3?爲什麼我突然得到2而不是0的@@ ROWCOUNT?
第一次運行腳本時,我得到了@@ ROWCOUNT爲5,當時只有三條記錄被更新。
輝煌,就是這樣!我顯然沒有想到這一點。再次感謝! – LittleBobbyTables 2010-07-06 20:34:55