MSSQLSERVER_137

S’applique à :SQL ServerAzure SQL DatabaseAzure 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 de l’instruction SELECT ; elle se trouve 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)