sql >> Database >  >> RDS >> Sqlserver

Krijg resultaat van dynamische SQL in opgeslagen procedure

Heb je iets geprobeerd als:

DECLARE @FiscalYear INT, @DataSource NVARCHAR(25), @SQL NVARCHAR(250);
SET @DataSource = N'CustomerCosts20120328';
SET @SQL = N'SELECT DISTINCT @FiscalYear = FiscalYear FROM ' + @DataSource;
EXEC sp_executesql @SQL, N'@FiscalYear INT OUTPUT', @FiscalYear OUTPUT;

PRINT @FiscalYear;

U moet ervoor zorgen dat u nvarchar-strings voorvoegt met N, b.v. SELECT @SQL = N'SELECT ... .

U weet ook dat als de query meerdere rijen retourneert, de waarde die wordt toegewezen aan @FiscalYear is volkomen willekeurig, toch? Hoewel je een enkele waarde van die tabel mag verwachten, kan het geen kwaad om MAX() . te gebruiken of TOP 1 ... ORDER BY om ervoor te zorgen dat slechts één enkele, voorspelbare waarde ooit wordt toegewezen.



  1. .NET &MySQL-fout - Een aanroep naar SSPI is mislukt ... ontvangen bericht was onverwacht of slecht geformatteerd EN buffers geleverd aan een functie waren te klein

  2. door de gebruiker gedefinieerde aangepaste aggregatiefunctie met behulp van plsql

  3. Blob exporteren van MySQL-database naar bestand met alleen SQL

  4. Automatisering gebruiken om releasetests op Galera Cluster te versnellen met ClusterControl