一过程
CREATE PROCEDURE Procedure1



。select * from tab1;GO
另过程
CREATE PROCEDURE Procedure2
select * from (Procedure1 的记录集);GOProcedure1是别人写的,不想改动,只想在Procedure2上解决该如何处理,高手们帮帮我。

解决方案 »

  1.   

    select * from (exec Procedure1) a
      

  2.   

    这个只能把结果集放到表里,然后再检索吧。。insert into 表 exec proc1第一个存储过程的结果集是select * from tab1?那直接在proc2里用select * from tb1可以吗?
      

  3.   

    to xeqtr1982(HaN) insert into 表 exec proc1这样运行会报错的。select * from tab1  只是打个比方,是说明Procedure1最后返回一个记录集而已,如果真的是
    这样简单,我就不用急着找人帮忙了。
      

  4.   

    eg:--建立測試環境
    Create Table TEST(ID Int,Name Varchar(10))
    Insert TEST Select 1,'aa'
    Union All Select 2,'bb'
    Union All Select 3,'cc'
    GO
    --建立存儲過程
    Create Proc Proc1
    As
    Select * From TEST
    GO
    Create Proc Proc2
    As
    Begin
    Create Table #T(ID Int,Name Varchar(10))
    Insert #T EXEC Proc1
    Select *From #T Where ID<3
    End
    GO
    --測試
    EXEC Proc2
    GO
    --刪除測試環境
    Drop Table TEST
    Drop Proc Proc1,Proc2
    GO
    --結果
    /*
    ID Name
    1 aa
    2 bb
    */
      

  5.   

    --你的存储过程有几个结果集?create table t(id int)
    insert into t select 1
    gocreate proc a
    asselect * from t
    gocreate table t1(id int)
    insert into t1 exec a
    goselect * from t1drop table t,t1
    drop proc a
      

  6.   

    eg:--建立測試環境
    Create Table TEST(ID Int,Name Varchar(10))
    Insert TEST Select 1,'aa'
    Union All Select 2,'bb'
    Union All Select 3,'cc'
    GO
    --建立存儲過程
    Create Proc Proc1
    As
    Select * From TEST
    GO
    Create Proc Proc2
    As
    Begin
    Create Table #T(ID Int,Name Varchar(10))
    Insert #T EXEC Proc1
    Select *From #T Where ID<3
    End
    GO
    --測試
    EXEC Proc2
    GO
    --刪除測試環境
    Drop Table TEST
    Drop Proc Proc1,Proc2
    GO
    --結果
    /*
    ID Name
    1 aa
    2 bb
    */
      

  7.   

    第一个proc最后就返回一个数据集.
      

  8.   

    --不使用临时表,如何获取存储过程的数据集?select * from openrowset('sqloledb','Trusted_Connection=yes','exec 数据库名.dbo.存储过程名') select * from openrowset('sqloledb','Trusted_Connection=yes','exec 数据库名..存储过程名') select * from openrowset('sqloledb','localhost';'用户名';'密码','exec 数据库名..存储过程名')select * from openrowset('sqloledb','192.168.0.1';'用户名';'密码','exec 数据库名..存储过程名')
      

  9.   

    解决了,xeqtr1982(HaN) & paoluo(一天到晚游泳的鱼) 是正确的.只能通过临时表解决散分
      

  10.   

    这种方式也可以直接访问存储过程的数据集,而不用临时表:select * from openrowset('sqloledb','Trusted_Connection=yes','exec 数据库名.dbo.存储过程名') select * from openrowset('sqloledb','Trusted_Connection=yes','exec 数据库名..存储过程名') select * from openrowset('sqloledb','localhost';'用户名';'密码','exec 数据库名..存储过程名')select * from openrowset('sqloledb','192.168.0.1';'用户名';'密码','exec 数据库名..存储过程名')