有两个问题
第一个:我已经有一个存储过程proc1,这个存储过程主要就是返回一个表,也就是这个存储过程里面有一个select语句。
好,下面我正在写另外一个存储过程proc2,在这个存储过程里面,我需要得到一个临时表#Taa,这个临时表的结构和数据就是储过程proc1返回的表的内容。有什么好办法吗?第二个:在一个存储过程里面,我用拼接字符串的办法得到了一个select语句(为什么拼接是因为从存储过程的参数传来了排序和过滤语句),比如含有这个select语句的字符串变量是@strSql,接下来我要得到一个临时表#Taa,这个这个临时表的结构和数据就是@strSql字符串变量里面的语句返回的表的内容。有什么好办法吗?

解决方案 »

  1.   

    假设你的session-1创建一个临时表,那么这个临时表只能被session-1使用,不能被其他的session使用。
    你可以试试,在SQL Server Management Studio里面,在第一个查询窗口中创建一个临时表,然后新建一个查询窗口,在里面操作前面建立的临时表,就会返回表不存在的错误信息。
     在一个回话里面使用两个存储过程。
      

  2.   

    引用的大概格式应该是:
    object_id('tempdb.dbo.#临时表名') 
      

  3.   

    1、在PROC2里建一个临时表#Temp,结构和PROC1返回的结构一样,然后在PROC2里用
       INSERT INTO #Temp
       EXEC PROC1
       (存储过程的结果以这样的方式写入到表里,但是必须先定义好表)
    2、同一
       INSERT INTO #Temp
       EXEC(@strSQL)
      

  4.   

    有两个问题
    第一个:我已经有一个存储过程proc1,这个存储过程主要就是返回一个表,也就是这个存储过程里面有一个select语句。
    好,下面我正在写另外一个存储过程proc2,在这个存储过程里面,我需要得到一个临时表#Taa,这个临时表的结构和数据就是储过程proc1返回的表的内容。有什么好办法吗?
    答:
      在proc2中创建一临时表#taa,结构与proc1过程返回表结构相同
       然后用 insert into #taa exec proc1
        插入数据,不过此方法只能单层,不能多层,也就是如果再创建proc3时,如果proc2返回结果,返回的结果不能再用insert into ....exec proc2插入数据。
    第二个:在一个存储过程里面,我用拼接字符串的办法得到了一个select语句(为什么拼接是因为从存储过程的参数传来了排序和过滤语句),比如含有这个select语句的字符串变量是@strSql,接下来我要得到一个临时表#Taa,这个这个临时表的结构和数据就是@strSql字符串变量里面的语句返回的表的内容。有什么好办法吗?
    根据select 的字段创建一临时表,再用insert into #taa exec (@strsql) 插入数据