MSSQLSERVER_137

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBase de données SQL dans Microsoft Fabric

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 renvoie l’erreur 137 pour les SET instructions 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.

Note

Dans Azure SQL Database et SQL Database dans Microsoft Fabric, l'USEinstruction n'est pas disponible. À la place, connectez-vous directement à la base de données prévue et exécutez le reste de l’échantillon de code.

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 :

Note

Dans Azure SQL Database et SQL Database dans Microsoft Fabric, l'USEinstruction n'est pas disponible. À la place, connectez-vous directement à la base de données prévue et exécutez le reste de l’échantillon de code.

USE AdventureWorks2022;  
  
GO  
  
DECLARE @mycol nvarchar(20) ;  
  
SET @mycol = 'Name';  
  
EXECUTE ('SELECT ' + @mycol + ' FROM Production.Product;') ;