Опитахте ли нещо като:
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;
Ще искате да се уверите, че добавяте към низовете nvarchar префикс с N, напр. SELECT @SQL = N'SELECT ...
.
Освен това знаете, че ако заявката върне няколко реда, стойността, която се присвоява на @FiscalYear
е напълно произволно, нали? Въпреки че може да очаквате една единствена стойност от тази таблица, не може да навреди да използвате MAX()
или TOP 1 ... ORDER BY
за да се гарантира, че винаги се присвоява само една единствена предвидима стойност.