Установка статуса NOCOUNT с локальной переменной
Я пытаюсь сохранить статус NOCOUNT, чтобы в конце процедуры вернуть его в исходное состояние, но все, что он делает, это дает мне Incorrect syntax near 'NOCOUNT'.
ошибка.
Что я делаю неправильно?
IF @@OPTIONS & 512 <> 0 /* check original state of NOCOUNT */
PRINT N'This user has SET NOCOUNT turned ON.';
ELSE
PRINT N'This user has SET NOCOUNT turned OFF.';
DECLARE @NCStat bit
SET @NCStat = ( @@OPTIONS & 512 ) /* sets @NCStat to original state of NOCOUNT */
SET NOCOUNT ON ;
IF @@OPTIONS & 512 <> 0 /* verify state of NOCOUNT */
PRINT N'This user has SET NOCOUNT turned ON.';
ELSE
PRINT N'This user has SET NOCOUNT turned OFF.';
PRINT N'NCStat = ' + cast(@NCStat as nvarchar) ; /* verify value of @NCStat */
/* line 23 */ SET NOCOUNT @NCStat ; /* return NOCOUNT to original state */
IF @@OPTIONS & 512 <> 0 /* verify state of NOCOUNT */
PRINT N'This user has SET NOCOUNT turned ON.';
ELSE
PRINT N'This user has SET NOCOUNT turned OFF.';
GO
Если строка 23 выделена, все остальные строки работают нормально, но строка 23 выдает вышеуказанную ошибку.
1 ответ
Решение
Вы не можете использовать переменную для установки NOCOUNT
:
/* line 23 */ SET NOCOUNT @NCStat ; /* not legal syntax */
Я бы сделал это вместо этого:
/* line 23 */
if @NCStat = 1
SET NOCOUNT ON
else
SET NOCOUNT OFF