首先贴出我的存储过程

create or replace procedure PROC_FILLANDREMOVECDEM As

V_ERROR NUMBER(10, 0); --异常

e_cardnbr varchar2(20); --卡号

e_filename varchar2(200); --文件名

e_contents clob; --内容

e_productno VARCHAR2(4); --产品编码

e_PAGENO VARCHAR2(4); --版面代码

e_CUSTR varchar2(20); --证件号码

e_STATUS VARCHAR2(5); --处理状态

e_CREATED_TIME DATE; --处理时间

CURSOR E_DATA IS

SELECT * FROM DATASTRIPCARDERR t where t.pageno is null;

begin

for err_data in E_DATA loop

BEGIN

--(select into多个变量时候如果查询的变量有一个为null则进入异常块,终止循环)

select t.cardnbr,

t.filename,

t.contents,

t.productno,

t.pageno,

t.custr,

t.status,

t.created_time

into e_cardnbr,

e_filename,

e_contents,

e_productno,

e_PAGENO,

e_CUSTR,

e_STATUS,

e_CREATED_TIME

from datastripcard t

where t.custr = err_data.custr

and t.productno = err_data.productno;

end;

end loop;

commit;

EXCEPTION

WHEN OTHERS THEN

V_ERROR := SQLCODE;

DBMS_OUTPUT.put_line(V_ERROR);

INSERT INTO s_syslog t

(t.log_id, t.type, t.contents, t.memo)

values

(s_syslog_seq.nextval,

'0008',

v_error,

'。。。。。');

COMMIT;

ROLLBACK;

end PROC_FILLANDREMOVECDEM;

更新后的存储过程:

添加的sql在  ——————————-块之间

create or replace procedure PROC_FILLANDREMOVECDEM As

V_ERROR NUMBER(10, 0); --异常

e_cardnbr varchar2(20); --卡号

e_filename varchar2(200); --文件名

e_contents clob; --内容

e_productno VARCHAR2(4); --产品编码

e_PAGENO VARCHAR2(4); --版面代码

e_CUSTR varchar2(20); --证件号码

e_STATUS VARCHAR2(5); --处理状态

e_CREATED_TIME DATE; --处理时间

e_count number;--注:控制变量

CURSOR E_DATA IS

SELECT * FROM DATASTRIPCARDERR t where t.pageno is null;

begin

for err_data in E_DATA loop

BEGIN

------------------------------------注:每次循环先根据条件看查询的数据是否有值

select count(1)

into e_count

from datastripcard t

where t.custr = err_data.custr

and t.productno = err_data.productno;

IF e_count > 0 THEN

-------------------------------------注:有值的话再赋给变量,这样就不会有异常

select t.cardnbr,

t.filename,

t.contents,

t.productno,

t.pageno,

t.custr,

t.status,

t.created_time

into e_cardnbr,

e_filename,

e_contents,

e_productno,

e_PAGENO,

e_CUSTR,

e_STATUS,

e_CREATED_TIME

from datastripcard t

where t.custr = err_data.custr

and t.productno = err_data.productno;

END IF;

end;

end loop;

commit;

EXCEPTION

WHEN OTHERS THEN

V_ERROR := SQLCODE;

DBMS_OUTPUT.put_line(V_ERROR);

INSERT INTO s_syslog t

(t.log_id, t.type, t.contents, t.memo)

values

(s_syslog_seq.nextval,

'0008',

v_error,

'。。。。。');

COMMIT;

ROLLBACK;

end PROC_FILLANDREMOVECDEM;

这是个笨方法,但是却最简单明了!

希望大神指教方法的不足之处。。。

点赞 (0)赏分享 (0)

最新文章

  1. 【C语言】09-字符串
  2. 云上人第七代产品简单的代码
  3. [BZOJ 1076][SCOI2008]奖励关(期望+状压Dp)
  4. mac osx 10.10 pip 安装问题
  5. axios添加自定义头部出现的问题
  6. html打折代码,HTML打折计算价格实现原理与脚本代码
  7. linux-01-linux中的一些特殊符号
  8. smokeping安装方法及不出图解决办法
  9. 数据结构—平衡二叉树
  10. 融合7大领域!Apache Flink 在开源生态下的应用实践
  11. php后端自学,【后端开发】自学php有哪些好的方法
  12. ubuntu清理硬盘空间
  13. 艾特肯加速方法加速乘幂法收敛
  14. 【编程语言】Python 从菜鸟到高手
  15. iOS dismissViewController到指定页面或dismiss多层
  16. eclipse字体颜色设置的方法
  17. Java设计模式之建造者模式(精髓版)
  18. matlab求马尔可夫转移矩阵,求马尔科夫模型的转移矩阵_马尔科夫转移矩阵
  19. 关于开源软件研究的英文论文_关于开源公司软件的7个神话
  20. linux下的删除文件命令,Linux下删除文件命令

热门文章

  1. WSL2.0解决:/bin/bash: xsel: command not found
  2. 机器学习人才的职业薪酬也发展
  3. ASIHTTPRequest報錯解決辦法
  4. tensorflow之pd模型
  5. linux中查看网卡型号的命令
  6. Java-基础---继承,方法重写,super关键字
  7. python统计字符串中字母个数字母无视大小写_python判断字符串是字母 数字 大小写(转载)...
  8. 关于Python切片的问题,从左向右提取元素与从右向左提取元素
  9. linux学习笔记:linux中查看文件内容的命令
  10. tcp测试监听工具_高清无码多图详解!性能测试六大核心体系(没人的时候偷偷看)...