Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL-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)