Oracle---显式游标

  一  游标的分类

  在Oracle中提供了两种类型的游标:静态游标和动态游标。

  1.静态游标是在编译时知道其SELECT语句的游标。静态游标又分为两种类型,即隐式游标和显式游标。

  2.当用户需要为游标使用的查询直到运行的时候才能够确定时,可以使用REF游标(引用游标)和游标变量。使用引用游标必须声明游标变量。引用游标又可以分为两种类型:强类型REF游标和弱类型REF游标。

  二  游标的用法

  1.显式游标的用法

  使用显式游标的4个步骤:

  1>声明游标

  语法:CURSOR cursor_name [(parameter[,parameter]...)]

     [RETURN return_type] IS select_statement;

  cursor_name:游标的名称。

  parameter:用于为游标指定输入参数。在指定数据类型时,不能使用长度约束。

  return_type:定义游标提取的行的类型。

  select_statement:游标定义的查询语句。

  2>打开游标

  语法:OPEN cursor_name[(parameters)];

  3>提取游标

  语法:FETCH cursor_name INTO variables;

  variables:变量名。

  4>关闭游标

  语法:CLOSE cursor_name;

  显式游标使用举例:

 1 --显式游标1
 2 DECLARE
 3   v_name tb_student.stu_name%TYPE;
 4   v_sex tb_student.stu_sex%TYPE;
 5   v_email tb_student.stu_email%TYPE;
 6   CURSOR cur_stu IS
 7   SELECT stu_name,stu_sex,stu_email FROM tb_student;
 8 BEGIN
 9   --打开游标
10   OPEN cur_stu;
11   LOOP
12     FETCH cur_stu INTO v_name,v_sex,v_email;
13     EXIT WHEN cur_stu%NOTFOUND;
14     dbms_output.put_line(v_name||‘  ‘||v_sex||‘  ‘||v_email);
15   END LOOP;
16   CLOSE cur_stu;
17 END;

  2.显式游标属性

  1>%FOUND:只有在DML语句影响一行或多行时,%FOUND才返回TRUE。

  2>%NOTFOUND:与%FOUND的作用相反。若DML语句没有影响任何行,则返回TRUE。

  3>%ROWCOUNT:返回DML语句影响的行数。若没有影响任何行,则返回0。

  4>%ISOPEN:返回游标是否已打开的值。在执行SQL语句之后,Oracle自动关闭SQL游标,所有隐式游标的%ISOPEN属性始终为FALSE。

时间: 2024-10-13 15:57:24

Oracle---显式游标的相关文章

oracle 游标使用(显式游标)

1. Set Serveroutput on; declare Cursor tem_cursor is select * from xuesheng xs; v_row tem_cursor%rowtype; begin open tem_cursor; loop fetch tem_cursor into v_row; exit when tem_cursor%NOTFOUND; dbms_output.put_line(v_row.xing_ming); end loop; close t

oracle 隐式游标,显示游标,游标循环,动态SELECT语句和动态游标,异常处理和自定义异常

游标的概念:    游标是SQL的一个内存工作区,由系统或用户以变量的形式定义.游标的作用就是用于临时存储从数据库中提取的数据块.在某些情况下,需要把数据从存放在磁 盘的表中调到计算机内存中进行处理,最后将处理结果显示出来或最终写回数据库.这样数据处理的速度才会提高,否则频繁的磁盘数据交换会降低效率.游标有两种类型:显式游标和隐式游标.在前述程序中用到的SELECT...INTO...查询语句,一次只能从数据库中提取一行数据,对于这种 形式的查询和DML操作,系统都会使用一个隐式游标.但是如果要

Oracle-35-隐式游标&显式游标

一.游标作用(或定义) 1.PL/SQL提供游标机制处理多行记录结果集: 2.游标类似于指针,使应用程序一次可以处理其中的一行记录,比如将游标放入一个for循环中,每循环一次就处理一行记录,那么循环n次就可以处理n行记录: 3.Oracle中,可以分为显式游标和隐式游标两种,比如select*fromstudent就是用隐式游标进行遍历student表,然后将查询结果展示: 4.在平常在进行SELECT查询.DML操作Oracle都会自动创建声明"隐式游标"来处理结果数据: 6.如果需

【PL/SQL练习】显式游标

cursor --------需要用户先定义,在select时,可以用于处理多行记录 1.declare  声明一个游标 2.open cursor (隐式游标自动open) 3.fetch cursor 读取记录到变量(在select时,可以通过循环的方式读取多行记录) 4.判断游标是否为空(到达最后一行记录) 5.close cusor 关闭游标 %isopen  判断游标是否open %found    判断游标是否为非空 %notfound  判断游标是否为空 %rowcount   在

显式游标

简介 显示游标使用的是SELECT叙述,被声明于任何一个区块的声明段落中,开发者可以控制几乎所有与游标有关的操作.显示游标对游标的处理提供了其他类似的游标无法做到的控制.他们要使用一次会传回多余一笔记录的SELECT叙述.虽然他们提供了比隐式游标更多的控制,但也需要额外的步骤来操作.使用显示游标,需要进行四个步骤: 1.声明 2.开启 3.从CURSOR中取数据 4.关闭 开启: 游标会在区块的执行或者例外段落中被开启.OPEN命令,准备好游标以供使用.游标中一次只可以有一笔作用中的记录.在开启

隐式游标和显式游标

隐式游标的例子

Oracle 隐式游标 存储过程

--隐式游标 注意变量赋值用(:=) 连接符用(||)而不是加号(+) DECLARE v_pk T_PLAT_KEYWORD.ID%TYPE; --主键 v_amount_message T_PLAT_KEYWORD_STATISTIC.AMOUNT%TYPE; v_amount_talk T_PLAT_KEYWORD_STATISTIC.AMOUNT%TYPE; CURSOR CUR IS SELECT DISTINCT B.NAME,B.TYPE,B.WEIXIN_PK FROM T_PL

oracle的显式游标

declare   cursor user_cur   is select *    from my_user;   user_row my_user%rowtype;   begin       open user_cur;       loop       fetch user_cur into user_row;       exit when user_cur%notfound;       dbms_output.put_line(user_row.user_id||'----'||u

Oracle PLSQL Demo - 08.定义显式游标[Define CURSOR, Open, Fetch, Close CURSOR]

declare v_empno scott.emp.empno%type; v_sal scott.emp.sal%type; cursor cur_emp is select t.empno, t.sal from scott.emp t; begin open cur_emp; loop fetch cur_emp into v_empno, v_sal; exit when cur_emp%notfound; dbms_output.put_line(v_empno || ' ' || v

ORACLE显式授权

同一数据库 两个不同用户 user1 user2 user1里面有一张表 table1 在user2里面创建synonymcreate synonym sy1 for user1.table1; 创建好之后,直接访问是可以的. select * from sy1; 是可以取到数据的. 但是放到一个存储过程里 create procedure "proc_test" is     cursor  cur_test is        select * from sy1 where row