Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Felügyelt Azure SQL-példány
SQL-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)