MSSQLSERVER_137
適用於:SQL ServerAzure SQL 資料庫 Azure SQL 受控執行個體
詳細資料
屬性 | 值 |
---|---|
產品名稱 | SQL Server |
事件識別碼 | 137 |
事件來源 | MSSQLSERVER |
元件 | SQLEngine |
符號名稱 | P_SCALAR_VAR_NOTFOUND |
訊息文字 | 必須宣告純量變數 "%.*ls"。 |
說明
當 SQL 腳本中使用變數而不先宣告變數時,就會發生此錯誤。 下列範例會針對SET和SELECT語句傳回錯誤 137,因為 未宣告@mycol 。
SET @mycol = 'ContactName';
SELECT @mycol;
此錯誤的其中一個較複雜原因包括使用在 EXECUTE 語句外部宣告的變數。 例如,SELECT 語句中指定的變數 @mycol 是 SELECT 語句的本機變數,因此它位於 EXECUTE 語句之外。
USE AdventureWorks2022;
GO
DECLARE @mycol nvarchar(20);
SET @mycol = 'Name';
EXECUTE ('SELECT @mycol FROM Production.Product;');
使用者動作
在腳本中其他地方使用之前,請先確認已宣告 SQL 腳本中使用的任何變數。
重寫腳本,使其不會參考在 EXECUTE 語句中宣告於其外部的變數。 例如:
USE AdventureWorks2022;
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)