MSSQLSERVER_137

Détails

Nom de produit

SQL Server

Version du produit

10.50

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 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 parce que @mycol n'a pas été déclarée.

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 par rapport à cette instruction SELECT ; elle se situe donc en dehors de l'instruction EXECUTE.

USE AdventureWorks2008R2 ;

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. Exemple :

USE AdventureWorks2008R2 ;

GO

DECLARE @mycol nvarchar(20) ;

SET @mycol = 'Name';

EXECUTE ('SELECT ' + @mycol + ' FROM Production.Product';) ;