Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL-databas i Microsoft Fabric
Detaljer
| Attribute | Värde |
|---|---|
| Produktnamn | SQL Server |
| Händelse-ID | 137 |
| Händelsekälla | MSSQLSERVER |
| Komponent | SQLEngine |
| Symboliskt namn | P_SCALAR_VAR_NOTFOUND |
| Meddelandetext | Måste deklarera skalbar variabeln "%.*ls". |
Explanation
Detta fel uppstår när en variabel används i ett SQL-skript utan att först deklarera variabeln. Följande exempel ger fel 137 för både SET- och SELECT-satserna eftersom @mycol inte deklareras.
SET @mycol = 'ContactName';
SELECT @mycol;
En av de mer komplicerade orsakerna till detta fel är användningen av en variabel som deklareras utanför EXEKUTE-satsen. Till exempel är variabeln @mycol specificerad i SELECT-satsen lokal för SELECT-satsen; alltså ligger den utanför EXECUT-satsen.
USE AdventureWorks2022;
GO
DECLARE @mycol nvarchar(20);
SET @mycol = 'Name';
EXECUTE ('SELECT @mycol FROM Production.Product;');
Användaråtgärd
Verifiera att alla variabler som används i ett SQL-skript deklareras innan de används någon annanstans i skriptet.
Skriv om skriptet så att det inte refererar till variabler i EXECUT-satsen som deklareras utanför det. Till exempel:
USE AdventureWorks2022;
GO
DECLARE @mycol nvarchar(20) ;
SET @mycol = 'Name';
EXECUTE ('SELECT ' + @mycol + ' FROM Production.Product;') ;
Se även
KÖR (Transact-SQL)
SET-instruktioner (Transact-SQL)
DECLARE @local_variable (Transact-SQL)