Sdílet prostřednictvím


MSSQLSERVER_137

Platí pro:SQL ServerAzure SQL DatabaseSpravovaná instance Azure SQLDatabáze SQL v Microsoft Fabric

Podrobnosti

Vlastnost Hodnota
Název produktu SQL Server
ID události 137
Zdroj událostí MSSQLSERVER
Součást SQLEngine
Symbolický název P_SCALAR_VAR_NOTFOUND
Text zprávy Musí deklarovat skalární proměnnou "%.*ls".

Explanation

Tato chyba nastává, když je proměnná použita v SQL skriptu bez předchozího deklarování proměnné. Následující příklad vrací chybu 137 jak pro příkazy SET, tak SELECT, protože @mycol není deklarován.

SET @mycol = 'ContactName';  
  
SELECT @mycol; 

Jednou z komplikovanějších příčin této chyby je použití proměnné, která je deklarována mimo příkaz EXEKUTE. Například proměnná @mycol specifikovaná v příkazu SELECT je lokální vůči příkazu SELECT; tedy je mimo příkaz EXEKUTE.

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

Uživatelská akce

Ověřte, že všechny proměnné použité v SQL skriptu jsou deklarovány před použitím jinde ve skriptu.

Přepište skript tak, aby neodkazoval na proměnné v příkazu EXECUT, které jsou deklarovány mimo něj. Například:

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

Viz také

EXECUTE (Transact-SQL)
Příkazy SET (Transact-SQL)
DECLARE @local_variable (Transact-SQL)