Czy próbowałeś czegoś takiego:
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;
Upewnij się, że poprzedzasz ciągi nvarchar znakiem N, np. SELECT @SQL = N'SELECT ...
.
Wiesz też, że jeśli zapytanie zwróci wiele wierszy, wartość przypisana do @FiscalYear
jest całkowicie arbitralne, prawda? Chociaż możesz oczekiwać pojedynczej wartości z tej tabeli, nie zaszkodzi użyć MAX()
lub TOP 1 ... ORDER BY
aby upewnić się, że przypisana zostanie tylko jedna, przewidywalna wartość.