Возможный дубликат:
Как использовать табличную переменную в динамическом операторе sql?
Если я делаю то, что хочу, с ВРЕМЕННОЙ ТАБЛИЦЕЙ, все работает нормально:
DECLARE @CTRFR VARCHAR(MAX)
SET @CTRFR = 'select blah blah blah' -- <-- very long select statement. this returns a 0 or some greater number. Please note! --> I NEED THIS NUMBER.
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo][#CTRFRResult]') AND type IN (N'U') )
DROP TABLE [dbo].[#CTRFRResult]
CREATE TABLE #CTRFRResult
(
CTRFRResult VARCHAR(MAX)
)
SET @CTRFR = 'insert into #CTRFRResult ' + @CTRFR
EXEC(@CTRFR)
Вышеупомянутое работает нормально.
Проблема в том, что несколько баз данных используют одну и ту же таблицу TEMP. Поэтому мне нужно использовать таблицу VARIABLE (вместо временной таблицы).
То, что у меня есть ниже, не работает, потому что оно говорит, что таблица должна быть объявлена.
DECLARE @CTRFRResult TABLE
(
CTRFRResult VARCHAR(MAX)
)
SET @CTRFR = 'insert into @CTRFRResult ' + @CTRFR -- I think the issue is here.
EXEC(@CTRFR)
Установка @CTRFR
на insert into...
не работает, потому что я предполагаю, что имя таблицы выходит за рамки. Как мне имитировать код временной таблицы с помощью таблицы переменных?
Сообщение об ошибке, которое я получаю:
Необходимо объявить табличную переменную "@CTRFRResult"