Udostępnij za pomocą


MSSQLSERVER_137

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBaza danych SQL w usłudze Microsoft Fabric

Szczegóły

Attribute Wartość
Nazwa produktu SQL Server
Identyfikator zdarzenia 137
Źródło zdarzenia MSSQLSERVER
Składnik SQLEngine
Nazwa symboliczna P_SCALAR_VAR_NOTFOUND
Tekst wiadomości Należy zadeklarować zmienną skalarną "%.*ls".

Explanation

Błąd ten występuje, gdy zmienna jest używana w skrypcie SQL bez wcześniejszego zadeklarowania tej zmiennej. Poniższy przykład zwraca błąd 137 zarówno dla instrukcji SET, jak i SELECT, ponieważ @mycol nie jest deklarowany.

SET @mycol = 'ContactName';  
  
SELECT @mycol; 

Jedną z bardziej skomplikowanych przyczyn tego błędu jest użycie zmiennej zadeklarowanej poza poleceniem EXEKUTE. Na przykład zmienna @mycol określona w instrukcji SELECT jest lokalna względem instrukcji SELECT; dlatego znajduje się poza poleceniem EXEKUTE.

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

Akcja użytkownika

Sprawdź, czy wszelkie zmienne używane w skrypcie SQL są zadeklarowane przed użyciem w innym miejscu skryptu.

Przekształc skrypt tak, aby nie odwoływał się do zmiennych w instrukcji EXECUTE zadeklarowanych poza nim. Przykład:

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

Zobacz też

WYKONAJ (Transact-SQL)
INSTRUKCJE SET (Transact-SQL)
DECLARE @local_variable (Transact-SQL)