码迷,mamicode.com
首页 > 其他好文 > 详细

游标的使用

时间:2016-08-01 01:42:12      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:

PL/SQL 程序中 对于处理多行记录的事务经常使用游标来实现

 有点像JAVA的迭代器

 

 

1游标的使用

定义游标

打开游标

提取游标数据

关闭游标

 

注意:定义的游标不能有Into语句

 

2 使用游标

  --打印出80部门的所有的员工的工资

declare

 v_sal employees.salary%type;

 

  --定义游标

  cursor emp_sal_cursor is select salary from employees where department_id=80;

begin

   --打开游标

    open emp_sal_cursor;

    --提取游标

    fetch emp_sal_cursor into v_sal;

    

    while emp_sal_cursor%found loop  --相当于迭代器的hasnext

        dbms_output.put_line(‘salary:‘||v_sal);

        fetch emp_sal_cursor into v_sal;

        

        end loop;

        

        --关闭游标

         close emp_sal_cursor;

        

        

    

end;

 

3游标的for循环

Pl/sqL语言提供了游标for循环语句,自动执行游标的open fetch close语句和循环语句的功能;当进入循环时,游标for循环语句自动打开游标,并提取第一行数据  提取结束 也会自动关闭

 

将上面的程序修改成for循环实现

 

  --打印出80部门的所有的员工的工资

declare

  type emp_record is record

  (

   v_sal employees.salary%type,

   v_empid employees.employee_id%type,

   v_hiredate employees.hire_date%type

  );

   --声明一个记录类型的变量

   v_emp_record emp_record;

    

  --定义游标

  cursor emp_sal_cursor is select salary,employee_id,hire_date from employees where department_id=80;

begin 

 

  for c in emp_sal_cursor loop 

    dbms_output.put_line(‘empid:‘||c.salary||‘ salary‘||c.employee_id||‘hiredate:‘|| c.hire_date);

    end loop;

  /* --打开游标

    open emp_sal_cursor;

    --提取游标

    fetch emp_sal_cursor into v_sal;

    

    while emp_sal_cursor%found loop  --相当于迭代器的hasnext

        dbms_output.put_line(‘salary:‘||v_sal);

        fetch emp_sal_cursor into v_sal;

        

        end loop;

         

        --关闭游标

         close emp_sal_cursor;

        

        */

    

end;

 

这时候不需要记录类型了  用select 上的变量就足够了

 

 

4 通过游标也可以更新数据

 

5带参数的游标

在定义游标的后面加一个括号cursor emp_sal_cursor(dept_id ,sal )

 

6隐式游标

sql查询之后添加

If sql%notfound (意思是sql语句查询之后无记录)

游标的使用

标签:

原文地址:http://www.cnblogs.com/HJL085/p/5724340.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!