MSSQLSERVER_137
新增: 2008 年 11 月 17 日
詳細資料
產品名稱 |
SQL Server |
產品版本 |
9.0 |
產品組建編號 |
|
事件識別碼 |
137 |
事件來源 |
MSSQLSERVER |
元件 |
SQLEngine |
符號名稱 |
P_SCALAR_VAR_NOTFOUND |
訊息文字 |
必須宣告純量變數 "%.*ls"。 |
說明
沒有事先宣告變數就在 SQL 指令碼中使用此變數時,就會發生這項錯誤。下列範例會同時針對 SET 和 SELECT 陳述式傳回錯誤 137,因為沒有宣告 @mycol。
SET @mycol = 'ContactName';
SELECT @mycol;
發生這項錯誤其中一個更複雜的原因包括使用了在 EXECUTE 陳述式外部宣告的變數。例如,在 SELECT 陳述式中指定的變數 @mycol 是 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';) ;
請參閱
其他資源
EXECUTE (Transact-SQL)
SET (Transact-SQL)
DECLARE @local\_variable (Transact-SQL)