MSSQLSERVER_137

Данные

Название продукта

SQL Server

Версия продукта

10.0

Номер сборки продукта

Идентификатор события

137

Источник события

MSSQLSERVER

Компонент

SQLEngine

Символическое имя

P_SCALAR_VAR_NOTFOUND

Текст сообщения

Должна быть объявлена скалярная переменная «%.*ls».

Пояснение

Эта ошибка происходит, если переменная используется в сценарии SQL без предварительного объявления этой переменной. В следующем примере происходит возврат ошибки 137 применительно к обеим инструкциям, SET и SELECT, поскольку переменная @mycol не объявлена.

SET @mycol = 'ContactName';

SELECT @mycol;

Одной из трудноуловимых причин этой ошибки является использование переменной, которая объявлена вне инструкции EXECUTE. В следующем примере переменная @mycol, указанная в инструкции SELECT, является локальной по отношению к инструкции SELECT, поэтому находится вне области действия инструкции EXECUTE.

USE AdventureWorks;

GO

DECLARE @mycol nvarchar(20);

SET @mycol = 'Name';

EXECUTE ('SELECT @mycol FROM Production.Product;');

Действия пользователя

Убедитесь в том, что все переменные, используемые в сценарии SQL, объявляются перед их применением в любом месте сценария.

Перепишите сценарий так, чтобы в инструкции EXECUTE не применялись ссылки на переменные, которые объявлены вне этой инструкции. Пример:

USE AdventureWorks;

GO

DECLARE @mycol nvarchar(20);

SET @mycol = 'Name';

EXECUTE ('SELECT ' + @mycol + ' FROM Production.Product';) ;