几种常用游标写法

创建表
CREATE TABLE "SCOTT"."DEPT"  (
    "DEPTNO" NUMBER(2,0),
    "DNAME"  VARCHAR2(14 BYTE),
    "LOC"    VARCHAR2(13 BYTE),
    CONSTRAINT "PK_DEPT" PRIMARY KEY ("DEPTNO") USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ENABLE
  )
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE
  (
    INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT
  )
  TABLESPACE "USERS" ;
三种方式的游标展现:
SET serveroutput ON ;
DECLARE
  v_dname dept.dname%type;
  v_deptno dept.deptno%type;
  v_log dept.loc%type;
  CURSOR c_cursor(dno number)
  IS
    SELECT d.deptno, d.dname,d.loc FROM dept d where d.deptno = dno;
  type t_cursor IS ref CURSOR;
  v_cursor t_cursor;
  BEGIN
    dbms_output.put_line('使用游标一');
    BEGIN
      OPEN v_cursor FOR SELECT d.deptno,
      d.dname,d.loc FROM dept d ;
      LOOP
        FETCH v_cursor INTO v_deptno,v_log,v_dname;
      EXIT
    WHEN v_cursor%notfound ;
      dbms_output.put_line(v_deptno||'的名称是'||v_dname||v_log);
    END LOOP;
    CLOSE v_cursor;
  END ;
  dbms_output.put_line('使用游标二');
  BEGIN
    OPEN c_cursor(10);
    LOOP
      FETCH c_cursor INTO v_deptno,v_dname,v_log ;
      EXIT
    WHEN c_cursor%notfound;
      dbms_output.put_line(v_deptno||':'||v_dname);
    END LOOP ;
    CLOSE c_cursor;
  END ;
  dbms_output.put_line('使用游标三');
  BEGIN
    FOR cur IN c_cursor(10)
    LOOP
      dbms_output.put_line(cur.deptno || cur.dname);
    END LOOP;
  END;
END ;

转载于:https://my.oschina.net/lvzjane/blog/143291

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值