MSSQLSERVER_137
S’applique à : SQL ServerAzure SQL Database Azure SQL Managed Instance
Détails
Attribut | Valeur |
---|---|
Nom du produit | SQL Server |
ID de l’événement | 137 |
Source de l’événement | MSSQLSERVER |
Composant | SQLEngine |
Nom symbolique | P_SCALAR_VAR_NOTFOUND |
Texte du message | La variable scalaire « %.*ls » doit être déclarée. |
Explication
Cette erreur se produit lorsqu'une variable utilisée dans un script SQL n'a pas été préalablement déclarée. L’exemple suivant retourne l’erreur 137 pour les instructions SET et SELECT, car @mycol n’est pas déclaré.
SET @mycol = 'ContactName';
SELECT @mycol;
L'une des causes les plus compliquées de cette erreur est l'utilisation d'une variable qui a été déclarée en dehors de l'instruction EXECUTE. Par exemple, la variable @mycol spécifiée dans l’instruction SELECT est locale à l’instruction SELECT ; elle est donc en dehors de l’instruction EXECUTE.
USE AdventureWorks2022;
GO
DECLARE @mycol nvarchar(20);
SET @mycol = 'Name';
EXECUTE ('SELECT @mycol FROM Production.Product;');
Action de l’utilisateur
Vérifiez que toutes variables utilisées dans un script SQL ont été déclarées avant d'être utilisées par ailleurs dans le script.
Réécrivez le script afin qu'il ne fasse pas référence aux variables de l'instruction EXECUTE déclarées en dehors. Par exemple :
USE AdventureWorks2022;
GO
DECLARE @mycol nvarchar(20) ;
SET @mycol = 'Name';
EXECUTE ('SELECT ' + @mycol + ' FROM Production.Product;') ;
Voir aussi
EXECUTE (Transact-SQL)
Instructions SET (Transact-SQL)
DECLARE @local_variable (Transact-SQL)