Freigeben über


MSSQLSERVER_137

Neu: 17. November 2008

Details

Produktname

SQL Server

Produktversion

9.0

Buildnummer des Produkts

 

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 beispielsweise Fehler 137 für die SET- und die SELECT-Anweisung zurückgegeben, da @mycol nicht deklariert wurde.

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. Angenommen, die in der SELECT-Anweisung angegebene Variable @mycol ist lokal zu der SELECT-Anweisung. Das bedeutet, sie ist außerhalb der EXECUTE-Anweisung.

USE AdventureWorks;

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 AdventureWorks;

GO

DECLARE @mycol nvarchar(20) ;

SET @mycol = 'Name';

EXECUTE ('SELECT ' + @mycol + ' FROM Production.Product';) ;

Siehe auch

Andere Ressourcen

EXECUTE (Transact-SQL)
SET (Transact-SQL)
DECLARE @local\_variable (Transact-SQL)

Hilfe und Informationen

Informationsquellen für SQL Server 2005