Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für: SQL Server
Azure SQL-Datenbank
Azure SQL Managed Instance
Details
attribute | Wert |
---|---|
Produktname | SQL Server |
Ereignis-ID | 137 |
Ereignisquelle | MSSQLSERVER |
Komponente | SQLEngine |
Symbolischer Name | P_SCALAR_VAR_NOTFOUND |
Meldungstext | Die "%.*ls"-Skalarvariable muss deklariert werden. |
Erklärung
Dieser Fehler tritt auf, wenn in einem SQL-Skript eine Variable verwendet wird, ohne dass die Variable zuerst deklariert wurde. Das folgende Beispiel gibt Fehler 137 für die SET- und SELECT-Anweisungen zurück, da @mycol nicht deklariert ist.
SET @mycol = 'ContactName';
SELECT @mycol;
Eine der etwas komplizierteren Ursachen für diesen Fehler ist u. a. die Verwendung einer Variablen, die außerhalb der EXECUTE-Anweisung deklariert wurde. Die in der SELECT-Anweisung angegebene Variable @mycol z. B. lokal in der SELECT-Anweisung, daher befindet sie sich außerhalb der EXECUTE-Anweisung.
USE AdventureWorks2022;
GO
DECLARE @mycol nvarchar(20);
SET @mycol = 'Name';
EXECUTE ('SELECT @mycol FROM Production.Product;');
Benutzeraktion
Überprüfen Sie, ob alle in einem SQL-Skript verwendeten Variablen deklariert wurden, bevor sie an anderer Stelle im Skript verwendet werden.
Schreiben Sie das Skript um, sodass es nicht auf Variablen in der EXECUTE-Anweisung verweist, die außerhalb davon deklariert wurden. Zum Beispiel:
USE AdventureWorks2022;
GO
DECLARE @mycol nvarchar(20) ;
SET @mycol = 'Name';
EXECUTE ('SELECT ' + @mycol + ' FROM Production.Product;') ;
Weitere Informationen
EXECUTE (Transact-SQL)
SET-Anweisungen (Transact-SQL)
DECLARE @local_variable (Transact-SQL)