create or replace function fun_plan_station_contrast(groupid varchar2) return number is tmp varchar2(200); mycur sys_refcursor; res number :=0;--不符合条件的记录条数 type station_record is record( strCode varchar2(200), strName varchar2(200), planQuantity number(19,2), configStock number(19,2), configQuantity number(19,2), stockQuantity number(19,2) );--定义新类型来存放存储过程返回的结果 tmp_record station_record; begin tmp := 'call plan_station_contrast(:param1,:param2) '; execute immediate tmp using groupid,out mycur ;--调用存储过程 --游标默认已打开,因为存储过程中是open refcursor for if(mycur%isopen) then dbms_output.put_line('打开'); else dbms_output.put_line('关闭'); end if; loop fetch mycur into tmp_record; exit when mycur%notfound; if tmp_record.planQuantity<>tmp_record.configQuantity or tmp_record.stockQuantity<>tmp_record.configStock then res:=res+1; end if; end loop; close mycur;--关闭游标 return res; end fun_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 --外采配置 from --到站计划 (select p.oil_code,p.oil_name ,sum(plan_Quantity)-sum(special_Quantity) planQuantity ,sum(stock_Quantity) configStock from (select oil_code,oil_name ,decode(special,''0'',nvl(train_quantity, 0) + nvl(ship_quantity, 0)+ nvl(pipeline_quantity, 0) +nvl(truck_quantity, 0),0)plan_Quantity ,decode(special,''1'',nvl(train_quantity, 0),0) special_Quantity ,decode(special,''2'',nvl(train_quantity, 0) + nvl(ship_quantity, 0)+ nvl(pipeline_quantity, 0) +nvl(truck_quantity, 0),0) stock_Quantity from p_station where sid = '||groupid||' )p group by p.oil_code,p.oil_name) station full join --配置计划 ( select p.oil_code,p.oil_name ,sum(decode(a.dtype,''factory'',decode(a.f_type,1,p.plan_quantity,0),''stock'',0,p.plan_quantity)) configQuantity --配置量 ,sum(decode(a.dtype,''factory'',decode(a.f_type,1,0,p.plan_quantity),''stock'',p.plan_quantity,0)) stockQuantity --外采量 from p_disbtn p left outer join P_CONFIG_PLAN_FLOW f on p.flow_code=f.flow_code --关联配置计划流向 left outer join acc_domain a on p.company_code=a.code where bill_month='''||planDate||''' and (select status from p_disbtn_group where bill_month='''||planDate||''')=''2'' and f.company_code='''||deptCode||''' and p.plan_quantity>0 group by p.oil_code,p.oil_name ) config on station.oil_code=config.oil_code '; end plan_station_contrast;
相关推荐
oracle函数调用存储过程.doc
java调用oracle存储过程或者函数
本文实例讲述了Python使用cx_Oracle调用Oracle存储过程的方法。分享给大家供大家参考,具体如下: 这里主要测试在Python中通过cx_Oracle调用PL/SQL。 首先,在数据库端创建简单的存储过程。 create or replace ...
你还在为如何调用oracle中的存储过程和函数而烦恼吗,请看看该文档。
如何调用oracle的函数、存储过程
oracle 存储过程 函数 dblink 绝对对工作和平时学习有价值的资料。针对个人具体情况做修改即可使用
ibatis调用oracle的函数,存储过程的方法,从网上收集的,还没有整理。
Oracle中的函数、存储过程、包. 函数 ①系统函数 ②自定义函数 ③使用函数 ④编写过程 ⑤过程的调用
Oracle10G_函数与存储过程 Oracle数据库中不仅可以使用单条语句对数据库进行增、删、改、查操作,而且可以多条语句组成一个语句块,并一起执行。这些语句块可以进行显式命名,并被其他应用调用。这些命名的语句块被...
自定义函数不能被直接在Java中调用,可以通过存储过程调用函数的方法。本文采用实例的方法,介绍如何在Oracle数据库客户端PL/SQL中创建自定义函数,然后创建相应的存储过程调用该函数,最终实现一个实例计算。
1.1.3 调用存储过程 5 1.2存储函数(FUNCTIONE) 6 1.2.1 创建存储函数 6 1.2.2 删除存储函数 7 1.3 包(package) 7 1.3.1 包的基本结构 7 1.3.2 包的创建 7 1.3.3 调用包中元素 9 1.3.4 包的修改和删除 9 第二章 ...
Java调用oracle函数返回oracle类(类似)集合
主要介绍了Mybatis调用Oracle存储过程的方法介绍,需要的朋友可以参考下
调用数据库里的一个函数 一个函数本质上一个返回一个结果的存储过程,这个例子示范了怎么调用有in、out和in/out参数的函数
PL/SQL中的过程和函数(通常称为子程序)是PL/SQL块的一种特殊的类型,这种类型的子程序可以以编译的形式存放在数据库中,并为后续的程序块调用。 相同点: 完成特定功能的程序 不同点:是否用return语句返回值。 ...
快速学习函数创建和练习。 创建函数、存储过程、创建过程、调用存储过程、AUTHID、PRAGMA AUTONOMOUS_TRANSACTION、开发存储过程步骤、删除过程和函数、过程与函数的比较
怎么利用MyBatis传List类型参数到数据库存储过程中实现批量插入数据?接下来通过本文给大家介绍Mybatis传list参数调用oracle存储过程,需要的朋友可以参考下
Oracle存储过程语法 Oracle的存储过程语法如下: create procedure 存储过程名称(随便取) is 在这里可以定义常量、变量、游标、复杂数据类型这里可以定义变量、常量 begin 执行部分 end; (2)带参数的存储...
存储过程、自定义函数、包及触发器的详细,对存储过程不熟悉的人有帮助