Почему переменная @@ ROWCOUNT возвращает ноль после оператора IF - PullRequest
0 голосов
/ 19 июня 2019

Это простой код, ссылающийся на базу данных pubs.Оператор SELECT возвращает 10 записей, поэтому для переменной @@ ROWCOUNT должно быть установлено значение 10. Но почему в окне сообщений указано «0 записей найдено».Есть ли причина, по которой после оператора IF @@ ROWCOUNT устанавливается в 0?

Если я поставлю SELECT @@ ROWCOUNT сразу после оператора WHERE, переменная @@ ROWCOUNT будет равна 10. Но она изменяется после выполнения IF IFAT.

SELECT *
FROM pubs.dbo.employee
WHERE pub_id ='0877' 

IF   @@ROWCOUNT > 0
     PRINT CONVERT(CHAR(2), @@ROWCOUNT) + ' records found'
ELSE
    PRINT 'No records found'

1 Ответ

3 голосов
/ 19 июня 2019

@@ROWCOUNT возвращает количество строк для последнего оператора.Это очень изменчиво.Так что, в принципе, все может сбросить его.

Если вам это нужно, немедленно назначьте его параметру!

DECLARE @ROWCNT INT;

SELECT * FROM pubs.dbo.employee WHERE pub_id = '0877';
SET @ROWCNT = @@ROWCOUNT;

Затем используйте значение параметра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...