Você tentou algo como:
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;
Você vai querer certificar-se de prefixar as strings nvarchar com N, por exemplo
SELECT @SQL = N'SELECT ...
. Além disso, você sabe que, se a consulta retornar várias linhas, o valor atribuído a
@FiscalYear
é completamente arbitrário, certo? Embora você possa esperar um único valor dessa tabela, não faz mal usar MAX()
ou TOP 1 ... ORDER BY
para garantir que apenas um valor único e previsível seja atribuído.