我在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,我希望update语句返回的@@ROWCOUNT为0。
在“查询分析器”中运行上述查询时,得到的@@ROWCOUNT为0。那很好。
Sql包含与上面完全相同的Sql语句。如果使用以下OSQL语句,则@@ROWCOUNT也会得到一个0:
osql.exe -D TestConn -U UserID -P pwd -s , -h-1 -w 100 -n ^
-i "C:\Scripts\Test.sql"
如果批处理文件中有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?为什么我会突然得到@@ROWCOUNT为2而不是0?
第一次运行脚本时,我的@行数为5,当时只更新了三条记录。