Получение результата динамического SQL в хранимой процедуре.

Я пишу хранимую процедуру, в которой мне нужно динамически построить оператор 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)

Можно ли сделать это без прибегая к использованию фактической таблицы?

Спасибо.

7
задан Tom 24 April 2012 в 13:18
поделиться