邹老师的学生回复可以吗
select * from OPENROWSET(
'SQLOLEDB',
'SERVER=server;uid=sa;pwd=sapwd;Database=master','SET FMTONLY  OFF; exec 存储过程名') as a其它的就是Join、where连接了。

解决方案 »

  1.   

    可以是可以,只是,我调用的存储过程用了临时表了,每次都需要drop table啊
      

  2.   

    ALTER  PROCEDURE dbo.compute_pqi
    @ro_na varchar(50),@yy char(4),@mm char(2),@lufu char(2)
    AS
    select * from OPENROWSET(
    'SQLOLEDB',
    'SERVER=.;uid=sa;pwd=sapsw;Database=datename',
    'SET FMTONLY  OFF; exec compute_ssi @ro_na,@yy,@mm,@lufu') as a服务器: 消息 8180,级别 16,状态 1,过程 compute_pqi,行 6
    未能准备语句。
    服务器: 消息 137,级别 15,状态 1,过程 compute_pqi,行 6
    必须声明变量 '@ro_na'。
    [OLE/DB provider returned message: 无法完成延迟准备。]
      

  3.   

    是不是得把@ro_na,@yy,@mm,@lufu换成直接的数值呀
      

  4.   

    例子:把变量换成实际数值:
    sp_test存储过程有两个参数,值为001,A------------字符串型.
    select * from OPENROWSET(
    'SQLOLEDB',
    'SERVER=it-server;uid=sa;pwd=587146;Database=tempdb'
    ,'SET FMTONLY  OFF; exec sp_test ''001'',''A''') as a
    ----------
    sp_test存储过程有两个参数,值为1,2-------------整型
    select * from OPENROWSET(
    'SQLOLEDB',
    'SERVER=it-server;uid=sa;pwd=587146;Database=tempdb'
    ,'SET FMTONLY  OFF; exec sp_test 1,2) as a
      

  5.   

    不太明白,那这个怎么改呢?
    exec compute_ssi @ro_na,@yy,@mm,@lufu
      

  6.   

    把select * from OPENROWSET(
    'SQLOLEDB',
    'SERVER=.;uid=sa;pwd=sapsw;Database=datename',
    'SET FMTONLY  OFF; exec compute_ssi @ro_na,@yy,@mm,@lufu') as a变成一个字符串存入@str
    然后用execute(@str)试试
      

  7.   

    惨了。
    注释
    如果 OLE DB 提供程序在指定的数据源中支持多个目录和架构,那么就需要目录及架构名称。如果 OLE DB 提供程序并不支持目录和架构,那么可以省略 catalog 及 schema 的值。 如果提供程序只支持架构名,那么必须指定一个两部分名称,形式为 schema.object。如果提供程序只支持目录名,那么必须指定一个三部分名称,形式为 catalog.schema.object。!!!!!!OPENROWSET 不接受参数变量。!!!!!!!
    刚刚查到。。