MSSQLSERVER_137

Gilt für:SQL ServerAzure SQL-DatenbankAzure 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. Im folgenden Beispiel wird der Fehler 137 für die SET- und SELECT-Anweisung zurückgegeben, 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. Beispielsweise ist die variable @mycol , die in der SELECT-Anweisung angegeben ist, lokal für die SELECT-Anweisung; daher befindet er 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. 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)