MSSQLSERVER_137

Si applica a:SQL ServerDatabase SQL di AzureIstanza gestita di SQL di AzureDatabase SQL in Microsoft Fabric

Dettagli

Attributo Valore
Nome prodotto SQL Server
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. Il seguente esempio restituisce l'errore 137 sia per le SET istruzioni che per quelle SELECT perché @mycol non è dichiarato.

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. Ad esempio, la variabile @mycol specificata nell'istruzione SELECT è locale per l'istruzione SELECT, pertanto si trova all'esterno dell'istruzione EXECUTE.

Note

In database SQL di Azure e SQL database in Microsoft Fabric, l'USEaffermazione non è disponibile. Invece, collegati direttamente al database previsto ed esegui il resto del campione di codice.

USE AdventureWorks2022;  
  
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 nell'istruzione EXECUTE dichiarate al di fuori dell'istruzione stessa. Ad esempio:

Note

In database SQL di Azure e SQL database in Microsoft Fabric, l'USEaffermazione non è disponibile. Invece, collegati direttamente al database previsto ed esegui il resto del campione di codice.

USE AdventureWorks2022;  
  
GO  
  
DECLARE @mycol nvarchar(20) ;  
  
SET @mycol = 'Name';  
  
EXECUTE ('SELECT ' + @mycol + ' FROM Production.Product;') ;