MSSQLSERVER_137
Data creazione: 17 novembre 2008
Dettagli
Nome prodotto |
SQL Server |
Versione prodotto |
9.0 |
Numero di build del prodotto |
|
ID evento |
137 |
Origine evento |
MSSQLSERVER |
Componente |
SQLEngine |
Nome simbolico |
P_SCALAR_VAR_NOTFOUND |
Testo del messaggio |
Dichiarare la variabile scalare "%.*ls". |
Spiegazione
Questo errore si verifica quando viene utilizzata una variabile in uno script SQL senza prima dichiararla. Il seguente esempio restituisce l'errore 137 per entrambe le istruzioni SET e SELECT poiché @mycol non è dichiarata.
SET @mycol = 'ContactName';
SELECT @mycol;
L'utilizzo di una variabile dichiarata all'esterno dell'istruzione EXECUTE rappresenta una delle cause più complesse di questo errore. Ad esempio, la variabile @mycol specificata nell'istruzione SELECT è locale rispetto all'istruzione SELECT, ed è pertanto esterna all'istruzione EXECUTE.
USE AdventureWorks;
GO
DECLARE @mycol nvarchar(20);
SET @mycol = 'Name';
EXECUTE ('SELECT @mycol FROM Production.Product;');
Azione utente
Verificare che le variabili utilizzate in uno script SQL siano dichiarate prima di utilizzarle in altre posizioni all'interno dello script.
Riscrivere lo script in modo che non faccia riferimento a variabili nell'istruzione EXECUTE dichiarate all'esterno di tale istruzione. Ad esempio:
USE AdventureWorks;
GO
DECLARE @mycol nvarchar(20) ;
SET @mycol = 'Name';
EXECUTE ('SELECT ' + @mycol + ' FROM Production.Product';) ;
Vedere anche
Altre risorse
EXECUTE (Transact-SQL)
SET (Transact-SQL)
DECLARE @local\_variable (Transact-SQL)