Delen via


MSSQLSERVER_137

Van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-database in Microsoft Fabric

Bijzonderheden

Attribute Waarde
Productnaam SQL Server
Gebeurtenis-id 137
Bron van gebeurtenis MSSQLSERVER
Onderdeel SQLEngine
Symbolische naam P_SCALAR_VAR_NOTFOUND
Berichttekst Moet de scalaire variabele "%.*ls" declareren.

Explanation

Deze fout doet zich voor wanneer een variabele wordt gebruikt in een SQL-script zonder eerst de variabele te declareren. Het volgende voorbeeld geeft fout 137 voor zowel de SET- als de SELECT-instructies omdat @mycol niet is gedeclareerd.

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

Een van de meer ingewikkelde oorzaken van deze fout is het gebruik van een variabele die buiten de uitvoeringsinstructie wordt gedeclareerd. Bijvoorbeeld, de variabele @mycol gespecificeerd in de SELECT-instructie is lokaal aan de SELECT-instructie; dus valt het buiten de uitvoerbare instructie.

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

Gebruikersactie

Controleer of alle variabelen die in een SQL-script worden gebruikt, worden gedeclareerd voordat ze elders in het script worden gebruikt.

Herschrijf het script zodat het geen variabelen in de uitvoeringsinstructie verwijst die buiten het script zijn gedeclareerd. Voorbeeld:

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

Zie ook

UITVOEREN (Transact-SQL)
SET-instructies (Transact-SQL)
DECLARE @local_variable (Transact-SQL)