pl SQL 学习笔记(五)oracle 游标

来源:互联网 发布:猎枪缩口数据 编辑:程序博客网 时间:2024/05/16 16:55

1、  游标属性。

游标属性的值总是属于最后一次执行的sql语句。除%isopen 的初值是FALSE 之外,都是NULL。

SQL%FOUND 如果有修改则返回true

SQL%NOTFOUND 没有修改则返回true

SQL%ROWCOUNT 修改记录行数。

SQL%ISOPEN 游标是否打开。\

SQL%BULK_ROWCOUNT forall语句的修改记录

SQL%BULK_EXCEPTION forall 修改异常.

案例:

Procedure name (rename_count  out boolen)

Is

   Begin

        Insert/Update/delete_ Sql;

        Rename_cout_out :=SQL%ROWCOUNT / SQL%FOUNT

   End;

2、  游标基础

游标可以想象成一个简单的指针。指向一个或者多个表的查询集。如:

Cursor employee_cur is select * from employee;

申明之后,需要打开游标;

Open employee_cur

然后,提前数据

Fetch employee_cur into employee_rec;

然后处理 记录。最后关闭游标

Close employee_cur;

 

隐式cursor

主要值系统里面在delete update insert时候,只懂会有一个cursor 会进行处理。所以系统在更新结束后可以增加类似如: SQL%ROWCOUNT 等表示处理的结果。

 

Ref cursor

 定义一个数据类型为cursor

Type rename_cursor is ref cursor 【return return_type】;--return 可有可无。

以上面的数据类型定义一个变量:

L_cursor rename_cursor;

打开 L_cursor 并指向query数据集;

Open L_cursor is select * from table

最后 处理L_cursor之后 关闭

Close L_cur搜人

 

  Cursor带参数

如:

    Cursor cursor_name(var_name in/out datatype )

Is

Query_sql ;

Begin

  Open cursor_name(参数)

  Fetch

   Close 等。

 

3、  Cursor 的其他几个特性:

Select … FOR  update;

作用: 读之前给予一个行级锁。在读结束之后才能update;

用法: cursor  curname  is  sql_query for update; --这里增加一个forupdate;

注意的是 如果 有for update 那么 需要增加commit/rollback 表示运行结束:

 

Where current  of:

作用:SQL 中 为游标的update /delete 语句提供,用于修改最后一条记录:

用法:update table_name

      Set set_clause;

      Where current of cursor_name;  --这里是游标不是记录集。

这条语句值更新游标中的最后一条记录。

 

 

0 0
原创粉丝点击