Condividi tramite


MSSQLSERVER_137

Dettagli

Nome prodotto

SQL Server

Versione prodotto

10.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 una variabile viene utilizzata in uno script SQL senza essere stata dichiarata in precedenza. Nell'esempio seguente viene restituito l'errore 137 per entrambe le istruzioni SET e SELECT poiché @mycol non è stata dichiarata.

SET @mycol = 'ContactName';

SELECT @mycol;

Una delle cause più complesse di questo errore include l'utilizzo di una variabile dichiarata al di fuori dell'istruzione EXECUTE. La variabile @ mycol specificata nell'istruzione SELECT, ad esempio, è locale per l'istruzione SELECT, ma è esterna all'istruzione EXECUTE.

USE AdventureWorks;

GO

DECLARE @mycol nvarchar(20);

SET @mycol = 'Name';

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

Azione utente

Verificare che qualsiasi variabile utilizzata in uno script SQL venga dichiarata prima di essere utilizzata.

Riscrivere lo script in modo che non faccia riferimento a variabili dell'istruzione EXECUTE dichiarate al di fuori dell'istruzione stessa, come illustrato nell'esempio seguente:

USE AdventureWorks;

GO

DECLARE @mycol nvarchar(20) ;

SET @mycol = 'Name';

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