Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a:SQL Server
Azure SQL Database
Instancia
administrada de Azure SQLBase de datos SQL en Microsoft Fabric
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. El siguiente ejemplo devuelve el error 137 tanto para las SET sentencias como para SELECT porque @mycol no está declarado.
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
EJECUTAR (Transact-SQL)
SET Afirmaciones (Transact-SQL)
DECLARE @local_variable (Transact-SQL)