MSSQLSERVER_137
詳細資料
產品名稱 |
SQL Server |
產品版本 |
10.50 |
產品組建編號 |
|
事件識別碼 |
137 |
事件來源 |
MSSQLSERVER |
元件 |
SQLEngine |
符號名稱 |
P_SCALAR_VAR_NOTFOUND |
訊息文字 |
必須宣告純量變數 "%.*ls"。 |
說明
當您在 SQL 指令碼中使用某個變數,但卻沒有先宣告該變數時,就會發生這個錯誤。下列範例會針對 SET 和 SELECT 陳述式傳回錯誤 137,因為沒有宣告 @mycol。
SET @mycol = 'ContactName';
SELECT @mycol;
導致這個錯誤的其中一個更複雜原因包括使用了在 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';) ;