cursor

cursor

 

1.2显示游标

显示游标用来处理返回多于一行的SELECT语句。

显示游标的处理包括四个步骤:①声明游标②打开游标③提取fetch结果到PL/SQL变量中④关闭游标

CURSOR cursor_name IS SELECT_statement;   --声明游标

OPEN cursor_name;                                           --打开游标

                     --打开游标时会进行如下活动:检查绑定变量bind variable的取值 ,活动集被确定,活动集active set的指针指向第一行

                                                               仅在cursor打开时刻对绑定变量进行检查,活动集被确定
FETCH cursor_name INTO list_of_variables;

FETCH cursor_name INTO PL/SQL_record;

CLOSE cursor_name;

 

例子:

-- Created on 2011/6/10 by SUN
declare
  -- Local variables here
  v_StudentID  students.id%TYPE;
  v_firstname  students.first_name%TYPE;
  v_lastname   students.last_name%TYPE;

--  v_major      students.major%TYPE;
  CURSOR c_students(v_major students.major%TYPE) IS
    SELECT id,first_name,last_name
      FROM students
      WHERE major=v_major;
begin
  -- v_major:='Computer Science';
  -- v_major:='Economics';
  OPEN c_students('Computer Science');
  --  v_major :='Computer Science';
  LOOP
    FETCH c_students INTO v_studentid,v_firstname,v_lastname;
    EXIT WHEN c_students%NOTFOUND;
    DBMS_OUTPUT.PUT_LINE(v_studentid);
    DBMS_OUTPUT.PUT_LINE(v_firstname);
    DBMS_OUTPUT.PUT_LINE(v_lastname);
  END LOOP;
  CLOSE c_students;
  --ORA-01001:invalid cursor  FETCH c_students INTO v_studentid,v_firstname,v_lastname;
end;

 

1.3隐式游标

SQL cursor不被程序打开和关闭,PL/SQL隐式地打开SQL游标,处理其中的SQL语句,然后关闭该游标。隐式的游标用户处理INSERT、UPDATE、DELETE和单行的SELECT...INTO语句。因为SQL cursor是通过PL/SQL engine 打开和关闭的,所有OPEN、FETCH和CLOSE命令是无关闭的。

 

1.4NO_DATA_FOUND和%NOTFOUND

 

当SELECT...INTO语句没有找到时触发NO_DATA_FOUND

   WHERE子句触发%NOTFOUND  值为TRUE

   UPDATE或DELETE语句的WHERE语句触发SQL%NOTFOUND值为TRUE

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值