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)
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour