PL/SQL游标的使用

  1. 游标的使用语法

    1).定义游标

    declare

    cursor 游标名 [(参数名 参数类型[,参数名 参数类型])] is select statement;

    2)打开游标

    if not cursor_name%isopen then

    open cursor_name;

    end if;

    3)使用游标读取数据

    loop

    fetch cursor_name into variable;

    exit when cursor_name%notfound;

    --TODO task statements

    end loop;

    4)关闭游标

    close cursor_name;

2.带参数的游标

declare

cursor c_emp(dno number) is

select ename from emp where deptno=dno;

v_name emp.ename%type;

begin

if not c_emp%isopen then

open c_emp(20);

end if;

loop

fetch c_emp into v_name;

exit when c_emp%notfound;

dbms_output.put_line(v_name);

end loop;

end;

3.游标属性

isopen,游标当前打开状态;

found,notfound,游标当前是否指向一条存在记录的数据;

rowcount--游标影响的行数,并不是总行数。

4.隐式游标

修改、删除操作时oracle会创建隐式游标,这些游标的定义、打开、关闭都市系统自动完成的,隐式游标名字为SQL;存放数据为与显式游标无关、最新处理一条SQL语句所包含的数据。

具体属性有:SQL%found;sql%notfound,sql%isopen;sql%rowcount;

5.游标数量限制

Oracle游标数量:默认情况下同一个会话允许打开300个。

查看与修改最大打开游标数:

以sys用户登录-->

SQL> show parameter cursor;

NAME                                 TYPE        VALUE

------------------------------------ ----------- --------

cursor_sharing                       string      EXACT

cursor_space_for_time                boolean     FALSE

open_cursors                         integer     300

session_cached_cursors               integer     50

修改最大打开的游标数:

SQL> alter system set open_cursors=500 scope=both;

scope的取值可以是:both,memory(仅更改当前实例,不更改参数文件),spfile(数据库重启后即生效)。

时间: 2024-08-06 03:46:30

PL/SQL游标的使用的相关文章

PL/SQL游标

PL/SQL游标:A:分类:1:隐式游标:非用户明确声明而产生的游标. 你根本看不到cursor这个关键字.2:显示游标:用户明确通过cursor关键字来声明的游标. B:什么是隐式游标:1:什么时候产生:会在执行任何合法的SQL语句(DML---INSERT UPDATE DELETE DQL-----SELECT)中产生.他不一定存放数据.也有可能存放记录集所影响的行数.如果执行SELECT语句,这个时候游标会存放数据.如果执行INSERT UPDATE DELETE会存放记录影响的行数.C

Oracle数据库PL SQL游标

PL SQL游标 将hregright表中不存在hrno的记录,用house表中的hrno填充(house唯一的时候) declare cursor house_cur is select h.regno,h.hrno from house h where h.hrno is not null group by h.regno,h.hrno having count(h.regno)=1; begin for house in house_cur loop update hregright r

PL/SQL 游标 (实验七)

PL/SQL 游标 emp.dept 目标表结构及数据 要求 基于部门表建立游标dept_cursor1,使用记录变量接收游标数据,输出部门表信息: 显示格式: 部 门 号: XXX 部门名称: XXX 所在位置: XXX 基于部门表建立游标dept_cursor2,使用标量变量接收游标数据,输出部门表信息: 显示格式:部门号:XXX 部门名称:XXX 所在位置:XXX 基于雇员表建立游标emp_cursor,根据用户输入的部门号,输出该部门薪水在5000元上的雇员姓名.薪水. 显示格式:雇员姓

PL/SQL 游标的使用详解

一:通过游标,PL/SQL 指向语句被分析以后的活动集 二:对于不同的SQL语句,游标的使用情况不同:1:非查询语句--隐式的2:结果是单行的查询语句--隐式的或显式的3:结果是多行的查询语句--显式的 三:游标属性1:%FOUND 2:%NOTFOUND 3:%ISOPEN 4:%ROWCOUNT 三:显式游标的用法四个步骤(1)定义一个游标名,以及与其相对应的SELECT 语句.语法:CURSOR cursor_name IS select_statement (2)打开游标.语法:OPEN

PL/SQL 游标的使用

 游标的使用 ①游标概念 为了处理SQL 语句,ORACLE 必须分配一片叫上下文( context area )的区域来处理所必需的信息, 当中包含要处理的行的数目.一个指向语句被分析以后的表示形式的指针以及查询的活动集(active set). 游标是一个指向上下文的句柄( handle)或指针. 通过游标,PL/SQL能够控制上下文区和处理语句时上下文区会发生些什么事情 ②显式游标处理 1.显式游标处理需四个PL/SQL步骤: 定义游标:就是定义一个游标名,以及与其相相应的SELECT

Oracle数据库之PL/SQL游标

1. 游标概念 字面意思是游动的光标,是指向上下文区域的句柄或指针. 在PL/SQL块中执行CRUD操作时,ORACLE会在内存中为其分配上下文区.用数据库语言来描述游标就是:映射在上下文区结果集中一行数据上的位置实体. 用户可以使用游标访问结果集中的任意一行数据,将游标指向某行后,即可对该行数据进行操作.游标为应用提供了一种对具有多行数据查询结果集中的每一行数据分别进行单独处理的方法,是设计嵌入式SQL语句的应用程序的常用编程方式. 在每个用户会话中,可以同时打开多个游标,其最大数量由数据库初

PL/SQL 游标详解

刚打开游标的时候,是位于一个空行,要用fetch into 才能到第一行.只是要注意用更新游标的时候,不能在游标期间commit. 否则会报ORA-01002: fetch out of sequence就是COMMIT导致的错误.在打开有for update的cursor时,系统会给取出的数据加上排他锁(exclusive), 这样在这个锁释放前其他用户不能对这些记录作update.delete和加锁.而我一旦执行了commit,锁就释放了,游标也变成无效的,再去fetch数据时就出现错误了.

PL/SQL游标使用

游标只是一个指向查询语句返回的结果的指针,因此在游标定义时将包含一个查询定义.当游标打开后,数据被接收到一块内存区域存储,直到游标关闭. 游标实际上指向的是一块内存区域,这块内存区域位于进程全局区内部,称为上下文区域,在上下文区域中包含如下3类信息 1.查询返回的数据行 2.查询所处理的数据的行号 3.指向共享池中的已分析的SQL语句 游标实际上指向一块内存区域 游标定义时并不会获取游标数据,只有在游标被打开后,游标相关的查询语句被执行,然后将检索到的结果保存到内存中. 游标结构示意图 游标指向

Oracle笔记 九、PL/SQL 游标的使用

--演示隐式游标,系统自动声明,自动打开,自动使用并且自动关闭 begin update emp set sal = 1000; dbms_output.put_line('影响的行数:' || sql%rowcount); end;   rollback;   /*游标的使用方法: 第一步:声明游标 第二步:打开游标 第三步:使用游标进行循环操作 第四步:关闭游标*/   --普通游标,游标本身就是一个变量 declare --下面的这行代码声明了一个游标 cursor mycur is se