我在使用 OSQL 时遇到了一些奇怪的行为,不胜感激。
我有一个批处理文件,它将数据库字段从一列复制到另一列。这是一个示例脚本:
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 字段不再为 NULL,我希望更新语句返回 0 的 @@ROWCOUNT。
- 示例 1:
在查询分析器中运行上面的查询给我@@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 的2:
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?
第一次运行该脚本时,我得到了一个为 5 的 @@ROWCOUNT,当时只更新了三个记录。