PLSQL 游标的使用

本文详细介绍了PL/SQL中游标的使用方法,包括游标的声明、打开、读取和关闭等基本操作,并通过具体示例展示了如何利用游标进行数据处理。此外,还涉及了静态显示游标、游标FOR循环以及带参数的游标等多种应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.游标特性
%FOUND
%OPEN
%NOTFOUND
%ROWCOUNT

2.静态显示游标
DECLARE
  id item.item_id%TYPE;
  title varchar2(60);
  CURSOR c IS
    SELECT item_id,item_title
    FROM item
BEGIN
  OPEN c;
  LOOP
    FETCH c INTO id,title;
    EXIT WHEN c%NOTFOUND;
    DBMS_OUTPUT.PUT_LINE('id||'   '||title);
  END LOOP;
  CLOSE c;
END;

游标FOR循环
1.
DECLARE
  CURSOR c IS
    SELECT item_id AS id,item_title AS title
    FROM item
BEGIN
 FOR i IN c LOOP
    DBMS_OUTPUT.PUT_LINE(i.id||'  '||i.title);
  END LOOP;
END;

2.简单游标循环,需显式打开和关闭游标
DECLARE
 TYPE item_record IS RECORD (
   id NUMBER,
   title VARCAHR2(60));
 item ITERM_RECORD;
 CURSOR c IS
   SELECT item_id,item_title
   FROM item;

 BEGIN
   OPEN c;
   LOOP
     FETCH c INTO item;
     EXIT WHEN c%NOTFOUND;
     DBMS_OUTPUT.PUT_LINE(item.itemid||'   '||item.item_title);
   END LOOP;
   CLOSE c;
 END;

 3.
DECLARE
 TYPE item_record IS RECORD (
   id NUMBER,
   title VARCAHR2(60));
 item ITERM_RECORD;
 CURSOR c IS
   SELECT item_id,item_title
   FROM item;
 BEGIN
  FOR i IN c LOOP
    item := i;
    DBMS_OUTPUT.PUT_LINE(item.itemid||'   '||item.item_title);
  END LOOP;
 END;

 4.带参数的游标(简单循环)
 DECLARE
   lowend NUMBER;
   highend NUMBER;
   item_id NUMBER := 1012;

   TYPE item_record IS RECORD(
     id NUMBER,
     title VARCHAR2(60));
   item ITEM_RECORD;
   CURSOR c(low_id NUMBER,high_id NUMBER) IS
     SELECT item_id,item_title
     FROM item
     WHERE item_id BETWEEN low_id AND high_id;

 BEGIN
   lowend := 1005;
   highend := 1021;
   OPEN c(lowend,highend);
   LOOP
      FETCH c INTO item;
      EXIT WHEN c%NOTFOUND;
      DBMS_OUTPUT.PUT_LINE(item.id || '  '|| item.title);
   END LOOP;
   CLOSE c;
 END;

5.带参数的游标(FOR 循环)
 DECLARE
   lowend NUMBER;
   highend NUMBER;
   item_id NUMBER := 1012;
   TYPE item_record IS RECORD(
     id NUMBER,
     title VARCHAR2(60));
   item ITEM_RECORD;
   CURSOR c(low_id NUMBER,high_id NUMBER) IS
     SELECT item_id,item_title
     FROM item
     WHERE item_id BETWEEN low_id AND high_id;
 BEGIN
   lowend := 1005;
   highend := 1021;
   FOR i IN c(lowend,highend) LOOP
     item := i;
     DBMS_OUTPUT.PUT_LINE(item.id || '  '|| item.title);
 END;

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值