邹大哥~~存储过程中,如何调用其他存储过程的查询结果啊?

galaxywaif 2005-03-23 08:58:45
如题,
建了一个存储过程结果为

。。。。。
select ....
。。。。。

的查询

希望在另一个存储过程里调用这个select 的查询结果,能实现吗?
...全文
177 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
galaxywaif 2005-03-24
  • 打赏
  • 举报
回复
惨了。。。。
注释
如果 OLE DB 提供程序在指定的数据源中支持多个目录和架构,那么就需要目录及架构名称。如果 OLE DB 提供程序并不支持目录和架构,那么可以省略 catalog 及 schema 的值。

如果提供程序只支持架构名,那么必须指定一个两部分名称,形式为 schema.object。如果提供程序只支持目录名,那么必须指定一个三部分名称,形式为 catalog.schema.object。

!!!!!!OPENROWSET 不接受参数变量。!!!!!!!
刚刚查到。。。。。
gimy007 2005-03-24
  • 打赏
  • 举报
回复
把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)试试
galaxywaif 2005-03-24
  • 打赏
  • 举报
回复
不太明白,那这个怎么改呢?
exec compute_ssi @ro_na,@yy,@mm,@lufu
chinaandys 2005-03-24
  • 打赏
  • 举报
回复
例子:

把变量换成实际数值:
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
galaxywaif 2005-03-24
  • 打赏
  • 举报
回复
怎么换?
XiaoZhengGe 2005-03-24
  • 打赏
  • 举报
回复
不错.学习来了......
bzscs 2005-03-23
  • 打赏
  • 举报
回复
是不是得把@ro_na,@yy,@mm,@lufu换成直接的数值呀
galaxywaif 2005-03-23
  • 打赏
  • 举报
回复
根据你的提示,写了个,可是不行啊~~
哪里错了呢?
galaxywaif 2005-03-23
  • 打赏
  • 举报
回复
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: 无法完成延迟准备。]
galaxywaif 2005-03-23
  • 打赏
  • 举报
回复
可以是可以,只是,我调用的存储过程用了临时表了,每次都需要drop table啊
郭大侠_ 2005-03-23
  • 打赏
  • 举报
回复
我觉得将其她存储过程的结果集放到临时表中,然后操作临时表不也行吗?
chinaandys 2005-03-23
  • 打赏
  • 举报
回复
邹老师的学生回复可以吗


select * from OPENROWSET(
'SQLOLEDB',
'SERVER=server;uid=sa;pwd=sapwd;Database=master','SET FMTONLY OFF; exec 存储过程名') as a

其它的就是Join、where连接了。

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧