sql >> Database teknologi >  >> RDS >> Sqlserver

Få resultater fra dynamisk SQL i lagret procedure

Prøvede du noget som:

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;

Du skal sikre dig, at du præfikser nvarchar-strenge med N, f.eks. SELECT @SQL = N'SELECT ... .

Du ved også, at hvis forespørgslen returnerer flere rækker, bliver den værdi, der tildeles @FiscalYear er fuldstændig vilkårlig, ikke? Selvom du kan forvente en enkelt værdi fra den tabel, kan det ikke skade at bruge MAX() eller TOP 1 ... ORDER BY for at sikre, at kun en enkelt forudsigelig værdi nogensinde tildeles.



  1. Vælg data grupperet efter tid over midnat

  2. SQL-injektioner i ADOdb og generel hjemmesidesikkerhed

  3. Har problemer med at oprette en midlertidig tabel fra en UNION

  4. Sådan forhindrer du PostgreSQL i at ændre mine pænt formaterede SQL-definitioner