Я использую команду exec ("query_string") на сервере sql. Дело в том, что изменения, выполненные этой командой, не видны снаружи.
Я имею в виду, что я пытаюсь создать временную таблицу с динамическими столбцами в команде exec, и она работает нормально, но когда я пытаюсь сделать оператор выбора над созданной таблицей, я получаю сообщение об ошибке, в котором говорится, что таблица не существует.
Я знаю, что это проблема контекста, и я хочу понять, как выполнить команду exec, работающую в том же контексте, что и другие операторы sql ???
CREATE TABLE #Test ( TheDate datetime, Harvest int )
INSERT INTO #Test(TheDate, Harvest) VALUES ('2011/10/11', 50)
INSERT INTO #Test(TheDate, Harvest) VALUES ('2012/10/11', 100)
INSERT INTO #Test(TheDate, Harvest) VALUES ('2011/10/01', 20)
INSERT INTO #Test(TheDate, Harvest) VALUES ('2011/12/11', 50)
INSERT INTO #Test(TheDate, Harvest) VALUES ('2011/11/11', 50)
INSERT INTO #Test(TheDate, Harvest) VALUES ('2011/11/12', 150)
DECLARE @listCol2 varchar(max)
SET @listCol2 =
(SELECT DISTINCT ('[' + CONVERT(varchar,YEAR(TheDate)) + '-' + RIGHT('0'+CONVERT(varchar,MONTH(TheDate)),2) +'] date,')
FROM #Test
ORDER BY ('[' + CONVERT(varchar,YEAR(TheDate)) + '-' + RIGHT('0'+CONVERT(varchar,MONTH(TheDate)),2) +'] date,') ASC
FOR XML PATH(''))
SET @listCol2 = LEFT(@listCol2,LEN(@listCol2)-1)
SELECT @listCol2
EXEC ('CREATE TABLE #Test2 ('+@listCol2+')')
SELECT * FROM #Test2 --In this line I got this message: the name of the object #Test2 isn't valid, why???
DROP TABLE #Test2
DROP TABLE #Test
Спасибо