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.