sql >> Databasteknik >  >> RDS >> Sqlserver

Få resultat från dynamisk SQL i lagrad procedur

Testade du något 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 bör se till att du prefixar nvarchar-strängar med N, t.ex. SELECT @SQL = N'SELECT ... .

Du vet också att om frågan returnerar flera rader, tilldelas värdet @FiscalYear är helt godtyckligt, eller hur? Även om du kan förvänta dig ett enda värde från den tabellen, kan det inte skada att använda MAX() eller TOP 1 ... ORDER BY för att säkerställa att endast ett enda, förutsägbart värde någonsin tilldelas.



  1. Bäst att använda * när du anropar många fält i mysql?

  2. Två infogningsfrågor med länkade fält

  3. Mysql Beräkna tidsskillnaden mellan tidsstämplar i samma fält?

  4. Kan inte installera pg gem på Windows