select * from t1 where groupid in (
exec proc_c1 2)
---->
select * from t1 where groupid in (select * from openrowset('sqloledb','trusted_connection=yes','exec proc_c1 2')
)

解决方案 »

  1.   

    不能直接用存储过程返回的结果集,可先取到临时表:
    create table #t(groupid int)--这里假如groupid是int
    insert into #t(groupid) exec proc_c1 2
    select * from t1 where groupid in (select groupid from #t)
    drop table #t
      

  2.   

    或者把exec proc_c1 2定义一个输出变量
    先exec proc_c1 2赋值再select * from t1 where groupid in
      

  3.   

    --第一种方法:直接用存储过程返回的数据集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 数据库名..存储过程名')--第二种方法:先创建临时表,然后再追加create table #t(...)insert into #t exec 存储过程名select * from #t
      

  4.   

    insert into #t exec 存储过程名:服务器: 消息 197,级别 15,状态 1,行 3
    无法在向表插入变量时将 EXECUTE 用作源。
      

  5.   


    一般情况下,使用第一种方法有很多限制,即存储过程中不能有insert、update、delete语句。第二种方法是先创建表,用insert into 表名(字段列) exec 存储过程名
      

  6.   

    select * from openrowset('sqloledb','Trusted_Connection=yes','exec Call.dbo.proc_c1 2')服务器: 消息 7357,级别 16,状态 1,行 1
    未能处理对象 'exec Call.dbo.proc_c1 2'。OLE DB 提供程序 'sqloledb' 指出该对象中没有任何列。
    OLE DB 错误跟踪[Non-interface error:  OLE DB provider unable to process the object:ProviderName='sqloledb', Query=exec Call.dbo.proc_c1 2']。
      

  7.   

    insert into #t exec 存储过程名:表要有exec 存储过程名后的全部字段哦要先建好,临时表是可以的,表变量不行
      

  8.   

    不支持declare @tb1 table(groupid int)这样的临时表?
      

  9.   

    exec Call.dbo.proc_c1 2
    没问题吧?加引号试试?
      

  10.   

    不支持declare @tb1 table(groupid int)这样的临时表?这种
    insert into #t exec 存储过程名:
    不支持
      

  11.   

    一般情况下,使用第一种方法有很多限制,即存储过程中不能有insert、update、delete语句。:我的存储过程显然有这些语句,估计就是不支持了,exec Call.dbo.proc_c1 2
    肯定是没问题的
      

  12.   

    用select ... from openrowset有问题吗?
      

  13.   

    用select ... from openrowset有问题吗?b服务器: 消息 7357,级别 16,状态 1,行 1
    未能处理对象 'exec Call.dbo.proc_c1 2'。OLE DB 提供程序 'sqloledb' 指出该对象中没有任何列。
    OLE DB 错误跟踪[Non-interface error:  OLE DB provider unable to process the object:ProviderName='sqloledb', Query=exec Call.dbo.proc_c1 2']。
      

  14.   

    一般情况下,使用第一种方法有很多限制,即存储过程中不能有insert、update、delete语句。
      

  15.   

    create table #t(groupid int)可以,满足需求了,谢谢
    declare @tb1 table(groupid int)不行,不能用表变量,揭帖了