MSSQLSERVER_137
Gilt für: SQL Server Azure SQL-Datenbank Azure SQL verwaltete Instanz
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)