MSSQLSERVER_137

Сведения

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

SQL Server

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

10.50

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

 

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

137

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

MSSQLSERVER

Компонент

SQLEngine

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

P_SCALAR_VAR_NOTFOUND

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

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

Пояснение

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

SET @mycol = 'ContactName';

SELECT @mycol;

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

USE AdventureWorks2008R2;

GO

DECLARE @mycol nvarchar(20);

SET @mycol = 'Name';

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

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

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

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

USE AdventureWorks2008R2;

GO

DECLARE @mycol nvarchar(20) ;

SET @mycol = 'Name';

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