oracle存储过程cursor
来源:互联网 发布:孔颜之乐乐于何乎 编辑:程序博客网 时间:2024/06/05 10:04
/*遍历gws_payment_notice表,根据Wfr_No查询gws_write_off_record
根据gws_write_off_record的source_id查询gws_payment_notice_detail,
如果不存在,则对gws_payment_notice_detail作添加操作,对gws_payment_notice作更新操作*/
create or replace procedure proc_init_paymentNotice as
CURSOR c_paymentNotice is
select * from gws_payment_notice t_pn where t_pn.is_deleted = 'n';
/*付款通知单记录变量*/
r_paymentNotice gws_payment_notice%rowtype;
/*核销记录变量*/
c_wfr gws_write_off_record%rowtype;
/*根据sourceid查询gws_payment_notice_detail记录数*/
i_num number(10) := 0;
begin
OPEN c_paymentNotice;
LOOP
fetch c_paymentNotice
into r_paymentNotice;
exit when c_paymentNotice%notfound;
begin
select *
into c_wfr
from gws_write_off_record t_wfr
where t_wfr.wfr_no = r_paymentNotice.Wfr_No;
/*查询是否已存在gws_payment_notice_detail*/
select count(1)
into i_num
from gws_payment_notice_detail t
where t.source_id = c_wfr.source_id;
/*不存在gws_payment_notice_detail,才作添加,更新操作*/
if i_num = 0 then
/*添加gws_payment_notice_detail表*/
insert into gws_payment_notice_detail
(ID,
GMT_CREATE,
GMT_MODIFIED,
PAYMENT_NOTICE_ID,
SOURCE_ID,
AMOUNT,
UN_EXCHANGE_AMOUNT,
CREATOR,
MODIFIER,
IS_DELETED)
values
(seq_gws_payment_notice_detail.nextval,
sysdate,
sysdate,
r_paymentNotice.ID,
c_wfr.source_id,
r_paymentNotice.Amount,
r_paymentNotice.Un_Exchange_Gain_Loss,
'wb_cj189958',
'wb_cj189958',
'n');
/*更新paymentNotice表*/
update gws_payment_notice
set exchange_date = c_wfr.exchange_date,
exchange_type = c_wfr.exchange_type,
exchange_rate = c_wfr.exchange_rate,
source_type = c_wfr.source_type,
gmt_modified = sysdate,
modifier = 'wb_cj189958'
where ID = r_paymentNotice.ID;
end if;
exception
when no_data_found then
dbms_output.put_line('未查到核销记录,wfr_no='||r_paymentNotice.Wfr_No);
when too_many_rows then
dbms_output.put_line('查到多条核销记录,wfr_no='||r_paymentNotice.Wfr_No);
when others then
dbms_output.put_line('系统异常');
end;
END LOOP;
close c_paymentNotice;
begin
commit; /*提交*/
dbms_output.put_line('存储过程执行成功');
exception
when others then
rollback; /*回滚*/
dbms_output.put_line('存储过程执行失败');
end;
end proc_init_paymentNotice;
根据gws_write_off_record的source_id查询gws_payment_notice_detail,
如果不存在,则对gws_payment_notice_detail作添加操作,对gws_payment_notice作更新操作*/
create or replace procedure proc_init_paymentNotice as
CURSOR c_paymentNotice is
select * from gws_payment_notice t_pn where t_pn.is_deleted = 'n';
/*付款通知单记录变量*/
r_paymentNotice gws_payment_notice%rowtype;
/*核销记录变量*/
c_wfr gws_write_off_record%rowtype;
/*根据sourceid查询gws_payment_notice_detail记录数*/
i_num number(10) := 0;
begin
OPEN c_paymentNotice;
LOOP
fetch c_paymentNotice
into r_paymentNotice;
exit when c_paymentNotice%notfound;
begin
select *
into c_wfr
from gws_write_off_record t_wfr
where t_wfr.wfr_no = r_paymentNotice.Wfr_No;
/*查询是否已存在gws_payment_notice_detail*/
select count(1)
into i_num
from gws_payment_notice_detail t
where t.source_id = c_wfr.source_id;
/*不存在gws_payment_notice_detail,才作添加,更新操作*/
if i_num = 0 then
/*添加gws_payment_notice_detail表*/
insert into gws_payment_notice_detail
(ID,
GMT_CREATE,
GMT_MODIFIED,
PAYMENT_NOTICE_ID,
SOURCE_ID,
AMOUNT,
UN_EXCHANGE_AMOUNT,
CREATOR,
MODIFIER,
IS_DELETED)
values
(seq_gws_payment_notice_detail.nextval,
sysdate,
sysdate,
r_paymentNotice.ID,
c_wfr.source_id,
r_paymentNotice.Amount,
r_paymentNotice.Un_Exchange_Gain_Loss,
'wb_cj189958',
'wb_cj189958',
'n');
/*更新paymentNotice表*/
update gws_payment_notice
set exchange_date = c_wfr.exchange_date,
exchange_type = c_wfr.exchange_type,
exchange_rate = c_wfr.exchange_rate,
source_type = c_wfr.source_type,
gmt_modified = sysdate,
modifier = 'wb_cj189958'
where ID = r_paymentNotice.ID;
end if;
exception
when no_data_found then
dbms_output.put_line('未查到核销记录,wfr_no='||r_paymentNotice.Wfr_No);
when too_many_rows then
dbms_output.put_line('查到多条核销记录,wfr_no='||r_paymentNotice.Wfr_No);
when others then
dbms_output.put_line('系统异常');
end;
END LOOP;
close c_paymentNotice;
begin
commit; /*提交*/
dbms_output.put_line('存储过程执行成功');
exception
when others then
rollback; /*回滚*/
dbms_output.put_line('存储过程执行失败');
end;
end proc_init_paymentNotice;
0 0
- oracle存储过程cursor
- oracle存储过程 cursor使用
- ibatis 调用oracle存储过程 返回cursor
- java调用Oracle存储过程返回Cursor
- oracle执行存储过程返回游标cursor
- Oracle存储过程详解(四)-Oracle中Cursor介绍
- 存储过程CURSOR使用
- 存储过程-cursor
- ibatis配置oracle存储过程返回cursor类型
- Oracle 存储过程中使用cursor 游标遍历数据
- Oracle 存储过程中的游标cursor使用传入参数
- Java获取Oracle存储过程返回的Cursor
- oracle 存储过程及REF CURSOR的使用
- oracle存储过程使用%rowtype及cursor之经典案例
- java 处理oracle 存储过程返回的cursor
- oracle 存储过程及REF CURSOR的使用
- MySql存储过程 游标(Cursor)
- mysql存储过程例子cursor
- 审批-审批条件(标准单据)
- PAT乙级—1014. 福尔摩斯的约会 (20)-native
- 第15周程序阅读2
- 关于event.getX()与event.getRawX()的问题
- 【JS设计模式】解释器模式代码示例
- oracle存储过程cursor
- 迭代器模式
- html5新增主题结构元素之article
- 一念永恒 > 第九十六章 战鬼牙
- TCP的三次握手(建立连接)和四次挥手(关闭连接)
- Loading...
- Ajax入门实例----HelloWorld附源码详细注释
- 一念永恒 > 第九十七章 我就是张大胖!
- 一念永恒 > 第九十八章 龙象化海经