分享方式:


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)