比我我这样写select * into #tt from UserInfo
select *  from  #tt 在查询分析器没问题,在存储过程中 第二个#tt提示找不到对象,怎么办??

解决方案 »

  1.   

    这是由于临时表的生存范围的问题。
    临时表只生存于你当前的查询分析器,不同于create table ...
      

  2.   

    #tt 是会话内临时表,会话内(过程内) 有效
    ##tt 是全局临时表,全局有效
      

  3.   

    这个我知道,关键是select * into #tt from UserInfo 的#tt 后面提示找不到对象怎么处理??
      

  4.   

    贴出你的代码看看你这应该是 把select * into #tt from UserInfo 写成动态执行了临时表只在当前会话有效
      

  5.   

    我是说select * from #tt  在存储过程中提示找不到对象#tt,不过可以运行啊
      

  6.   

    经测试,楼主所说问题不存在,如下:
    if object_id('proc_SelectPen') is not null
    drop proc proc_SelectPen
    gocreate proc proc_SelectPen
    as
    select * into #t from pen
    select * from #t
    goexec proc_SelectPen请重新说明问题
      

  7.   

    if object_id('proc_SelectPen') is not null
    drop proc proc_SelectPen
    gocreate proc proc_SelectPen
    as
    select * into #t from pen
    select * from #t
    goexec proc_SelectPen
      

  8.   

    我知道你的意思了,
    全局临时表存放在tempdb数据库的Temporary Tables里,你自己找找看,
    也可用下面代码来测试。
    use tempdb
    if object_id('##tmp') is not null
    print 'exists'
    else
    print 'not exist'
      

  9.   

    给你看下,我是SQL2008,会自动语法提示的,提示对象名#tt无效,不过可以运行,我知道好像在SQL200不会去检查的