oracle 存储过程执行体中循环的两种写法

来源:互联网 发布:疯狂美工京东关联促销 编辑:程序博客网 时间:2024/05/22 15:29

--创建测试表

create table EMP (EMPNO number , ENAME varchar2(32) );

insert into EMP (EMPNO ,ENAME) values (10,'张三');

insert into EMP (EMPNO ,ENAME) values (20,'小马');

insert into EMP (EMPNO ,ENAME) values (30,'小米');

insert into EMP (EMPNO ,ENAME) values (40,'小明');


--创建存储过程

CREATE OR REPLACE PROCEDURE PROC_TEST IS

  CURSOR CURSOR_EMP IS
    SELECT EMPNO,ENAME FROM EMP;
  CUR_EMP_OBJ CURSOR_EMP%ROWTYPE;
BEGIN
  ---循环的第一种写法
  FOR CUR_EMP_OBJ IN CURSOR_EMP LOOP
    DBMS_OUTPUT.PUT_LINE('循环的第一种写法-FOR IN:' || CUR_EMP_OBJ.EMPNO || ' ' ||
                         CUR_EMP_OBJ.ENAME);
  END LOOP;

  ---循环的第二种写法
  OPEN CURSOR_EMP;
  LOOP
    FETCH CURSOR_EMP
      INTO CUR_EMP_OBJ;
    EXIT WHEN CURSOR_EMP%NOTFOUND;
    DBMS_OUTPUT.PUT_LINE('循环的第二种写法-FETCH INTO :' || CUR_EMP_OBJ.EMPNO || ' ' ||
                         CUR_EMP_OBJ.ENAME);
  END LOOP;
  CLOSE CURSOR_EMP;

  --异常处理
EXCEPTION
  WHEN OTHERS THEN
    BEGIN
      ROLLBACK;
      RAISE_APPLICATION_ERROR(-20002,
                              '执行异常:' || SQLCODE || '],原始错误信息是[' || SQLERRM || '].');
    END;
END;

说明:  要显示输出内容,需要打开内容输出窗口,在打开Commnd窗口中先输入  set serveroutput on ,然后在执行存储过程。


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 路由器被黑了打不开网页怎么办 致人轻伤跑了怎么办 轻伤对方要30万怎么办 老公用老婆的钱怎么办 想注册个公司要怎么办 域名续费不知道找谁怎么办 代收快递弄丢了怎么办 货到付款的快递人不在怎么办 快递送货上门人不在怎么办 ems快递签收人不在怎么办 快递被别人取了怎么办 怎么办快递宗和收发点 快递电话写错了怎么办 网上买沙发想退货怎么办 买的电脑想退货怎么办 买了衣服想退货怎么办 天猫买药审核通过后不要了怎么办 京东维修无发票怎么办 京东维修没有发票怎么办 苹果6s外音没了怎么办 苹果6splus开不了机怎么办 顺丰快递寄件填错收件人地址怎么办 收快递电话换了怎么办 顺丰快递没人收怎么办 网购东西没收到怎么办 中通快递没收到怎么办 快递员不给验货怎么办 顺丰验货不要了怎么办 闲鱼买家掉包了怎么办 闲鱼正在退款中怎么办 拒收货物卖家拒绝退款怎么办 货物没问题淘宝卖家拒收怎么办 头发稀少长的慢怎么办 没满16岁怎么办银行卡 网上买东西手机号填错了怎么办 买东西电话号码填错了怎么办 淘宝联盟扣54分怎么办 联盟被扣54分怎么办 ofo押金退了余额怎么办 网购还没收货就已签收怎么办 理财公司倒闭分公司法人怎么办