MSSQLSERVER_137

Gilt für:SQL ServerAzure SQL-DatenbankVerwaltete Azure SQL-InstanzSQL-Datenbank in Microsoft Fabric

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 liefert Fehler 137 für sowohl die SET und die SELECT-Anweisungen , 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.

Note

In Azure SQL-Datenbank und SQL Database in Microsoft Fabric ist die Anweisung USE nicht verfügbar. Stattdessen verbinden Sie sich direkt mit der vorgesehenen Datenbank und führen Sie den Rest des Codebeispiels aus.

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:

Note

In Azure SQL-Datenbank und SQL Database in Microsoft Fabric ist die Anweisung USE nicht verfügbar. Stattdessen verbinden Sie sich direkt mit der vorgesehenen Datenbank und führen Sie den Rest des Codebeispiels aus.

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