MSSQLSERVER_137
Applies to:
SQL Server
Azure SQL Database
Azure SQL Managed Instance
Details
Attribute | Value |
---|---|
Product Name | SQL Server |
Event ID | 137 |
Event Source | MSSQLSERVER |
Component | SQLEngine |
Symbolic Name | P_SCALAR_VAR_NOTFOUND |
Message Text | Must declare the scalar variable "%.*ls". |
Explanation
This error occurs when a variable is used in a SQL script without first declaring the variable. The following example returns error 137 for both the SET and SELECT statements because @mycol is not declared.
SET @mycol = 'ContactName';
SELECT @mycol;
One of the more complicated causes of this error includes the use of a variable that is declared outside the EXECUTE statement. For example, the variable @mycol specified in the SELECT statement is local to the SELECT statement; thus it is outside the EXECUTE statement.
USE AdventureWorks2022;
GO
DECLARE @mycol nvarchar(20);
SET @mycol = 'Name';
EXECUTE ('SELECT @mycol FROM Production.Product;');
User Action
Verify that any variables used in a SQL script are declared before being used elsewhere in the script.
Rewrite the script so that it does not reference variables in the EXECUTE statement that are declared outside of it. For example:
USE AdventureWorks2022;
GO
DECLARE @mycol nvarchar(20) ;
SET @mycol = 'Name';
EXECUTE ('SELECT ' + @mycol + ' FROM Production.Product;') ;
See Also
EXECUTE (Transact-SQL)
SET Statements (Transact-SQL)
DECLARE @local_variable (Transact-SQL)
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin