Oracle游标学习

来源:互联网 发布:淘宝极速贷款 编辑:程序博客网 时间:2024/05/20 21:45

1.  游标: 容器,存储SQL语句影响行数。 

2.  游标类型: 隐式游标,显示游标,REF游标。其中,隐式游标和显示游标属于静态游标(运行前将游标与SQL语句关联),REF游标属于动态游标(运行时将游标与SQL语句关联)。 

3.  隐式游标: DML语句对应的游标,由Oracle自动管理,也称SQL游标。(所有的DML操作都被Oracle内部解析为一个cursor名为SQL的隐式游标)

    隐式游标的属性有:

    %FOUND – SQL 语句影响了一行或多行时为 TRUE

    %NOTFOUND – SQL 语句没有影响任何行时为TRUE

    %ROWCOUNT – SQL 语句影响的行数

    %ISOPEN - 游标是否打开,始终为FALSE

4. 显示游标操作:

        (1)声明游标(关联SQL语句)    cursor+游标名 is/as sql语句

        (2)打开游标(执行SQL语句,填充游标)    open+游标名

        (3)提取游标的行    fetch 游标名 into 行类型变量

        (4)关闭游标       close+游标名

 

5. 循环游标

     循环游标用于简化游标处理代码

     当用户需要从游标中提取所有记录时使用

     循环游标的语法如下:

REF游标和游标变量

REF 游标和游标变量用于处理运行时动态执行的 SQL 查询

创建游标变量需要两个步骤:

      声明 REF 游标类型:type c_name is ref cursor

      声明 REF 游标类型的变量: bianliang c_name

用于声明 REF 游标类型的语法为:

 TYPE <ref_cursor_name> IS REF CURSOR

       [RETURN <return_type>];

打开游标变量的语法如下:

  OPEN cursor_name FOR select_statement;

声明强类型的REF游标

type emp_cur is ref cursor return emp%rowtype;

empRecord emp_cur;

声明弱类型的REF游标

type emp_cur is ref cursor;

empRecord emp_cur;

游标变量的优点和限制

 

游标变量的功能强大,可以简化数据处理。

游标变量的优点有:

可从不同的 SELECT 语句中提取结果集

可以作为过程的参数进行传递

可以进行赋值运算

使用游标变量的限制:

不能在程序包中声明游标变量(这儿指的不是声明游标)

FOR UPDATE子句不能与游标变量一起使用

不能使用比较运算符

原创粉丝点击