Compartir vía


MSSQLSERVER_137

Se aplica a: SQL ServerAzure SQL Database Azure SQL Instancia administrada

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)