Nota
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare ad accedere o a cambiare directory.
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare a cambiare directory.
Si applica a:SQL Server
Database 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. Nell'esempio seguente viene restituito l'errore 137 per entrambe le istruzioni SET e 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.
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:
USE AdventureWorks2022;
GO
DECLARE @mycol nvarchar(20) ;
SET @mycol = 'Name';
EXECUTE ('SELECT ' + @mycol + ' FROM Production.Product;') ;
Vedi anche
ESEGUI (Transact-SQL)
Istruzioni SET (Transact-SQL)
DECLARE @local_variable (Transact-SQL)