Я испытываю странное поведение с 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, я ожидаю, что оператор обновления вернет @@ ROWCOUNT, равный 0.
Выполнение вышеуказанного запроса в Query Analyzer дает мне 0 для @@ ROWCOUNT.Это хорошо.
Test.Sql содержит тот же оператор SQL, что и выше.Если я использую следующий оператор OSQL, я также получаю 0 для @@ ROWCOUNT:
osql.exe -D TestConn -U UserID -P pwd -s , -h-1 -w 100 -n ^
-i "C:\Scripts\Test.sql"
Если у меня есть оператор 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?Почему я вдруг получил @@ ROWCOUNT 2 вместо 0?
При первом запуске сценария я получил @@ ROWCOUNT 5, когда обновлялись только три записи.