MSSQLSERVER_137
Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance
Detalles
Attribute | Valor |
---|---|
Nombre del producto | SQL Server |
Id. de evento | 137 |
Origen de eventos | MSSQLSERVER |
Componente | SQLEngine |
Nombre simbólico | P_SCALAR_VAR_NOTFOUND |
Texto del mensaje | Debe declarar la variable escalar "%.*ls". |
Explicación
Este error se produce cuando una variable se utiliza en un script SQL sin declararla primero. En el ejemplo siguiente se devuelve el error 137 para las instrucciones SET y SELECT porque no se declara @mycol .
SET @mycol = 'ContactName';
SELECT @mycol;
Una de las causas más complicadas de este error incluye el uso de una variable que se declara fuera de la instrucción EXECUTE. Por ejemplo, la variable @mycol especificada en la instrucción SELECT es local para la instrucción SELECT; por lo tanto, está fuera de la instrucción EXECUTE.
USE AdventureWorks2022;
GO
DECLARE @mycol nvarchar(20);
SET @mycol = 'Name';
EXECUTE ('SELECT @mycol FROM Production.Product;');
Acción del usuario
Compruebe que cualquier variable que se use en un script SQL se declara antes de utilizarse en otra parte del script.
Vuelva a escribir el script para que no haga referencia a las variables de la instrucción EXECUTE que se declaran fuera de ella. Por ejemplo:
USE AdventureWorks2022;
GO
DECLARE @mycol nvarchar(20) ;
SET @mycol = 'Name';
EXECUTE ('SELECT ' + @mycol + ' FROM Production.Product;') ;
Consulte también
EXECUTE (Transact-SQL)
Instrucciones SET (Transact-SQL)
DECLARE @local_variable (Transact-SQL)