Heim >Datenbank >MySQL-Tutorial >Oracle PL/SQL基础 游标

Oracle PL/SQL基础 游标

WBOY
WBOYOriginal
2016-06-07 16:48:071049Durchsuche

ORACLE的游标分为显式游戏、隐式游戏,显式游标是指用户自己定义、操作的,用于处理查询返回多行的SELECT查询结果;隐式游标是系

Oracle的游标分为显式游戏、隐式游戏,显式游标是指用户自己定义、操作的,用于处理查询返回多行的SELECT查询结果;隐式游标是系统自动进行操作、用于处理DML语句和返回单行数据的SELECT查询。

在本文,主要讨论显式游标。

一、游标的使用步骤

步骤分四步:定义游标、打开游标、检索游标、关闭游标。

1、定义游标

游标必须在PL/SQL块的声明部分定义。

CURSOR cursor_name IS select_statement ;

定义游标时,并没有生成seletct_statement(SELECT查询)的数据,,当打开游标后,才真正生成数据。

2、打开游标

OPEN cursor_name ;

只有打开游标后,才会从数据库中查询出数据,缓存到内存分配的缓冲区里。

3、检索游标

FETCH curso_name INTO variable_list ;

检索游标的前提是,必须打开了游标,只有打开了游标了,缓冲区才会有数据。
 
游标检索数据,只能下移,不能回退,如:检索了第二条数据又想检索第一条数据,则必须先关闭游标后,再打开游标,才能检索第一条数据。
 
4、关闭游标
 
处理完游标检索出来的数据后,必须关闭游标,才能释放它所占用的系统资源,如所占用的内在缓冲区

CLOSE curso_name ;

相关阅读:

rlwrap - 解决Linux下SQLPLUS退格、上翻键乱码问题

SQLPLUS spool 到动态日志文件名

Oracle SQLPLUS提示符设置

通过设置SQLPLUS ARRAYSIZE(行预取)加快SQL返回速度

二、游标使用例子

declare
  -- declare cursor
  cursor c_dept is
  select * from dept t order by t.deptno;
  v_dept c_dept%rowtype;
begin
  --open cursor c_dept
  open c_dept;
 
  --检索cursor c_dept
  loop
    fetch c_dept into v_dept;
    dbms_output.put_line
    ('deptno:'||v_dept.deptno||',dname:'||v_dept.dname||',loc:'||v_dept.loc);
    exit when c_dept%notfound;
  end loop;
 
  --close cursor
  close c_dept;
end;

本文永久更新链接地址:

linux

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn