oracle 函数中调用存储过程

  项目中开发了一个存储过程来给报表提供数据源,而程序业务逻辑中需要有一个对该数据源进行判断的功能,开始是使用拼接sql的方式在存储过程中对应sql的外面包装一层来进行处理,但是觉得这种方式拼接的sql太长,而且以后业务逻辑改变要同时修改存储过程和代码,容易发生遗漏,故产生了在函数中处理存储过程的结果(游标)的想法。但是在网上搜索发现对存储过程返回的游标进行处理的例子很少,自己弄了半天终于成功了,在此记录一下。

存储过程plan_station_contrast

create or replace procedure plan_station_contrast(
 groupid in varchar2 ,--到站计划主表id,非空
 refCursor out sys_refcursor)
is
planDate  varchar2(6);--计划年月
deptCode  varchar2(10);--上报单位编码

begin
  select p.plan_date,p.dept_code into planDate,deptCode from p_station_group p where id=to_number(groupid);

 open refcursor for 'select nvl(station.oil_code,config.oil_code) oilCode,nvl(station.oil_name,config.oil_name) oilName
  ,nvl(station.planQuantity,0) planQuantity  --到站上报
  ,nvl(station.configStock,0)  configStock   --外采上报
  ,nvl(config.configQuantity,0) configQuantity --直炼配置
  ,nvl(config.stockQuantity,0) stockQuantity
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值