【发布时间】:2012-01-26 20:37:53
【问题描述】:
我在 sql server 上使用 exec("query_string") 命令。问题是这个命令执行的更改在外面是看不到的。
我的意思是,我尝试在 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
谢谢
【问题讨论】:
标签: sql sql-server sql-server-2008