Megosztás a következőn keresztül:


MSSQLSERVER_137

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példánySQL-adatbázis a Microsoft Fabricben

Részletek

Attribute Érték
Terméknév SQL Server
Eseményazonosító 137
Eseményforrás MSSQLSERVER
Összetevő SQLEngine
Szimbolikus név P_SCALAR_VAR_NOTFOUND
Üzenet szövege Deklarálnia kell a "%.*ls" skaláris változót.

Explanation

Ez a hiba akkor fordul elő, ha egy változót SQL szkriptben használunk anélkül, hogy előbb a változót hirdetnénk. A következő példa mind a SET, mind a SELECT utasításokra vonatkozó 137-es hibát adja vissza, mert @mycol nincs deklarálva.

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

Ennek a hibának az egyik bonyolultabb oka egy olyan változó használata, amelyet a EXECUTE utasításon kívül hirdetnek. Például a SELECT állításban @mycol változó lokális a SELECT utasításra; így kívül van a EXECUTE utasításon.

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

Felhasználói művelet

Ellenőrizd, hogy az SQL szkriptben használt változók bejelentve vannak-e, mielőtt máshol a szkriptben használnánk.

Írd át a szkriptet, hogy ne hivatkozzon a EXECUTE utasításban kívüli változókra. Például:

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

Lásd még:

VÉGREHAJTSA (Transact-SQL)
SET-utasítások (Transact-SQL)
DECLARE @local_variable (Transact-SQL)