Я пишу хранимую процедуру, в которой мне нужно динамически построить оператор SQL внутри процедуры для ссылки на переданное имя таблицы.
Мне нужно, чтобы этот оператор SQL возвращал результат, который затем можно использовать в остальной части процедуры.
Я пытался использовать временные таблицы и все такое, но все время получаю сообщение о том, что мне нужно объявить переменную и т. д.
Например,:
DECLARE @FiscalYear INT
DECLARE @DataSource NVARCHAR(25)
DECLARE @SQL NVARCHAR(250)
SELECT @DataSource = 'CustomerCosts20120328'
DECLARE @tempFiscalYear TABLE ( FiscalYear INT )
SELECT @SQL = 'INSERT INTO @tempFiscalYear SELECT DISTINCT FiscalYear FROM ' + @DataSource
EXEC(@SQL)
SELECT @FiscalYear = FiscalYear FROM @tempFiscalYear
Или...
DECLARE @FiscalYear INT
DECLARE @DataSource NVARCHAR(25)
DECLARE @SQL NVARCHAR(250)
SELECT @DataSource = 'CustomerCosts20120328'
SELECT @SQL = 'SELECT DISTINCT @FiscalYear = FiscalYear FROM ' + @DataSource
EXEC(@SQL)
Можно ли сделать это без прибегая к использованию фактической таблицы?
Спасибо.