MSSQLSERVER_137

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-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)