Partager via


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)

Aide et Informations

Assistance sur SQL Server 2005