MSSQLSERVER_137
Nouveau : 17 novembre 2008
Détails
Nom du produit |
SQL Server |
Version du produit |
9.0 |
Numéro de build du produit |
|
ID d'é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 est utilisée dans un script SQL sans être déclarée au préalable. L'exemple suivant retourne l'erreur 137 pour les instructions SET et SELECT car @mycol n'est pas déclarée.
SET @mycol = 'ContactName';
SELECT @mycol;
L'une des causes les plus complexes de cette erreur inclut l'utilisation d'une variable déclarée en dehors de l'instruction EXECUTE. Par exemple, la variable @mycol spécifiée dans l'instruction SELECT est locale pour l'instruction SELECT, mais en dehors de l'instruction EXECUTE.
USE AdventureWorks;
GO
DECLARE @mycol nvarchar(20);
SET @mycol = 'Name';
EXECUTE ('SELECT @mycol FROM Production.Product;');
Action utilisateur
Vérifiez que les variables utilisées dans un script SQL sont déclarées avant d'être utilisées autre part dans le script.
Récrivez le script de sorte qu'il ne fasse référence à aucune variable dans l'instruction EXECUTE déclarée en dehors d'elle. Par exemple :
USE AdventureWorks;
GO
DECLARE @mycol nvarchar(20) ;
SET @mycol = 'Name';
EXECUTE ('SELECT ' + @mycol + ' FROM Production.Product';) ;
Voir aussi
Autres ressources
EXECUTE (Transact-SQL)
SET (Transact-SQL)
DECLARE @local\_variable (Transact-SQL)