MSSQLSERVER_137

詳細

製品名

SQL Server

製品バージョン

10.50

製品ビルド番号

 

イベント ID

137

イベント ソース

MSSQLSERVER

コンポーネント

SQLEngine

シンボル名

P_SCALAR_VAR_NOTFOUND

メッセージ テキスト

スカラー変数 "% * ls" を宣言してください。

説明

このエラーは、SQL スクリプトで、変数を宣言する前にその変数を使用しようとした場合に発生します。次の例では、SET ステートメントおよび SELECT ステートメントの両方でエラー 137 が発生します。これは @mycol が宣言されていないためです。

SET @mycol = 'ContactName';

SELECT @mycol;

このエラーのより複雑な原因の 1 つは、EXECUTE ステートメントの外部で宣言された変数を使用することです。たとえば、SELECT ステートメントで指定した変数 @mycol は、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';);