ITPub博客

首页 > 数据库 > Oracle > 游标

游标

原创 Oracle 作者:sky850623 时间:2013-12-28 15:03:38 0 删除 编辑

 

二、显示游标
1.显示游标的使用
当需要准确的控制查询的数据,在PL/SQL块,子程序或包的声明部分显示声明一个游标。
可以使用三个命令控制一个游标:open,fetch和close,首先,使用open语句来初始化游标,它定义了结果集。然后,执行fetch得到所有的行,或者用bulk collect子句在一个时间点获取所以行.当最后一行处理完后,使用close语句来释放游标
/*****************************
名称:
功能描述:显示游标的使用
变量命名:
   输入变量 
   输出变量
   输入输出变量
   普通变量:v_/v             v_user_id/vuserid
   游标:cur_                     cur_userinfo
*****************************/

declare
    cursor cur_emp is select * from emp;  --声明游标
    v_emp emp%rowtype;  --保存游标中的每一行
begin
    open cur_emp;   --打开游标
    loop
       fetch cur_emp into v_emp;  --提取一行保存到记录变量
       exit when cur_emp%notfound;
       dbms_output.put_line(v_emp.ename||','||to_char(v_emp.sal));
    end loop;
    close cur_emp;  --关闭游标
end;
由于dbms_output.put_line中的变量是字符串,所以v_emp.sal要用to_char来转换.
2.bulk collect
3.显示游标的属性
 %FOUND :有一行被获取
 当一个游标或游标变量被打开但第一次获取之前,%found返回null.获取之后,最后一次获取返回一行都返回true,最后一次获取没有返回一行返回false.

/*****************************
名称:
功能描述:%fonud属性
变量命名:
   普通变量:v_/v             v_user_id/vuserid
   游标:cur_                     cur_userinfo
*****************************/
DECLARE
   CURSOR cur_emp IS SELECT ename, sal FROM emp WHERE ROWNUM < 11;
   v_ename emp.ename%TYPE;
   v_sal emp.sal%TYPE;
BEGIN
  OPEN cur_emp;
  IF (cur_emp%found is null) THEN
   DBMS_OUTPUT.PUT_LINE('NULL');
  END IF;
  LOOP
    FETCH cur_emp INTO v_ename, v_sal;
    IF cur_emp%FOUND THEN  -- fetch succeeded
      DBMS_OUTPUT.PUT_LINE('Name = ' || v_ename || ', salary = ' ||v_sal);
    ELSE  -- fetch failed, so exit loop
       EXIT;
    END IF;
  END LOOP;
  CLOSE cur_emp;
END;

 输出结果:
NULL
Name = SMITH, salary = 800
Name = ALLEN, salary = 1600
Name = WARD, salary = 1250
Name = JONES, salary = 2975
Name = MARTIN, salary = 1250
Name = BLAKE, salary = 4000
Name = CLARK, salary = 4000
Name = SCOTT, salary = 4000
Name = KING, salary = 5000
Name = TURNER, salary = 1500

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26937943/viewspace-1065227/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: exp异机备份
下一篇: 包的使用
请登录后发表评论 登录
全部评论

注册时间:2013-05-30

  • 博文量
    154
  • 访问量
    515361