TRY:
CREATE Procedure sp_WebShoes_Test
/*
测试存储过程
*/
AsDECLARE @sSql VARCHAR(8000)Select @sSql = ''
BEGIN
Select @sSql = 'Create Table ##QueryDataS (ShopID Char(4))'
Exec (@sSql)
Select * From ##QueryDataS/*这句出错*/
END
Return(0)
GO

解决方案 »

  1.   

    BEGIN
    Create Table #QueryDataS (ShopID Char(4))
    Select * From #QueryDataS
    END
      

  2.   

    CREATE Procedure sp_WebShoes_Test
    /*
    测试存储过程
    */
    AsDECLARE @sSql VARCHAR(8000)Select @sSql = ''
    BEGIN
    Select @sSql = 'Create Table ##QueryDataS (ShopID Char(4))'--改为全局临时表
    Exec (@sSql)
    Select * From ##QueryDataS/*这句出错*/
    END
    Return(0)
    GO
      

  3.   

    or CREATE Procedure sp_WebShoes_Test
    /*
    测试存储过程
    */
    AsDECLARE @sSql VARCHAR(8000)Select @sSql = ''
    BEGIN
    Select @sSql = 'Create Table #QueryDataS (ShopID Char(4))'
    Exec (@sSql+' Select * From ##QueryDataS')
    END
    Return(0)
    GO
      

  4.   

    or CREATE Procedure sp_WebShoes_Test
    /*
    测试存储过程
    */
    AsDECLARE @sSql VARCHAR(8000)Select @sSql = ''
    BEGIN
    Select @sSql = 'Create Table #QueryDataS (ShopID Char(4))'
    Exec (@sSql+' Select * From #QueryDataS')
    END
    Return(0)
    GO
      

  5.   

    这个道理很简单,就和其他语言的变量的生命周期一样,既然是局部的怎么可能出来呢?if (1=2)
    {
      int i;
      i=2; <<==这里是对的
    }
    i=2; <<==这里肯定错了解决的办法:create table #中间临时表(结构和里面的一样 int)exec('create ....... insert  #中间临时表 select * from #中间临时表')select * from #中间临时表
      

  6.   

    为了避免多个用户同时调用时冲突,你可以给全局临时表加上一个后缀.例如,采用用下面的方法来做你的存储过程:
    CREATE Procedure sp_WebShoes_Test
    /*
    测试存储过程
    */
    AsDECLARE @sSql VARCHAR(8000)
    declare @tbname varchar(250)  --这个变量用来保存全部临时表的表名set @tbname='##QueryDataS'+cast(newid() as varchar(36))  --给临时表加上一个后缀,防止多用户同时调用时产生冲突Select @sSql = ''
    BEGIN
    Select @sSql = 'Create Table ['+@tbname+'] (ShopID Char(4))'
    Exec (@sSql)
    exec ('Select * From ['+@tbname+']')
    END
    Return(0)
    GO
      

  7.   

    create table #中间临时表(结构和里面的一样 int)exec('create #某表....... insert  #中间临时表 select * from #某表')select * from #中间临时表
      

  8.   

    NEWID
    创建 uniqueidentifier 类型的唯一值。 语法
    NEWID ( )返回类型
    uniqueidentifier