为什么我的存储过程中的 EXEC(@SQL)
其中@SQL  = 'CREATE TABLE #TEMPZJXM(……)'
SELECT * FROM #TEMPZJXM --这句错误提示
消息 208,级别 16,状态 0,第 88 行
对象名 '#TEMPZJXM' 无效。请哪位大虾帮一下忙,先谢谢了

解决方案 »

  1.   

    'CREATE TABLE #TEMPZJXM(……) go SELECT * FROM #TEMPZJXM ' 
      

  2.   

    作用域不同,EXEC中的临时表不能在外面用
      

  3.   

    EXEC('CREATE TABLE #TEMPZJXM(……);SELECT * FROM #TEMPZJXM') 要分开执行,两条一起不行的
      

  4.   

    exec中执行的产生的临时表,在外面是访问不到的;可以生成一个实际的表,就可以访问了exec('create table tb(...)')select * from tb
      

  5.   

    EXEC('CREATE TABLE #T(NUM INT);SELECT * FROM #T')
    测试通过
      

  6.   

    CREATE TABLE直接写,
    不需要用变量,然后再 EXEC(变量),这是多余!
      

  7.   

    EXEC('CREATE TABLE (FID INT IDENTITY,FNAME VARCHAR(20))')就是这句有问题,虽然执行成功,但没有创建表 那个SELECT * form #TEMPZJXM 只不过是我在执行完创建表后看看是不是成功用的,没在EXEC 中。
      

  8.   

    上边已经说过了,EXEC里边创建的临时表,在外边是不能用的。
      

  9.   

    哦,明白了,是临时表无法访问的问题,但是,为什么直接CREATE TABLE #temp 就能访问呢? 顺便问一下怎么给分啊?