游标是处理数据的一种方法,为了查看或者处理结果集中的数据,游标提供了在结果集中一次一行或者多行前进或向后浏览数据的能力(百度百科)
逐行处理查询结果,以编程的方式访问数据
游标的类型:
显示游标
隐式游标
ref 游标:用于处理运行时才能确定的动态sql 查询的结果
隐式游标:
1、在pl/sql 中使用 DML 语句时自动创建隐式游标
2、隐式游标自动声明,打开和关闭,名字为sql
3、通过检查隐式游标的属性可以获得最近执行的 DML 语句的信息
4、隐式游标的属性有:
——%found - sql 语句影响了一行或多行时 为true
——%notfound - sql 语句没有没有影响任何行为时为 true
——%rowcount - sql 语句影响的行数
——%isopen 游标是否打开,始终为false
select into 语句:
SELECT INTO 语句从一个表中选取数据,然后把数据插入另一个表中。
SELECT INTO 语句常用于创建表的备份复件或者用于对记录进行存档。
显示游标:
1、 显示游标在 pl/sql 块的声明部分定义查询 ,该查询可以返回多行
2、声明游标——打开游标——提取行——关闭游标
3、允许使用游标删除或更新活动集中的行,声明时,必须使用 select、、、for update 语句
4、带参数的显示游标
REF游标和游标变量:
1、ref游标 和 游标变量用于处理运行时动态执行的sql 查询
2、创建游标变量需要两个步骤:(在声明ref 游标时,不需要将select 语句与其关联)
1)、声明 ref 游标类型
2)、声明ref 游标类型的变量
格式: type <ref_cursor_name> is ref cursor [ return <return_type ];
3、打开游标变量的语法:
1)、open cursor_name for select _statement;
2)、声明 强 类型(指定return type ,curosr 变量的类型必须和 return type 一致)的ref 游标
TYPE my_curtype IS REF CURSOR
RETURN stud_det%ROWTYPE;
order_cur my_curtype;
3)、声明 弱 类型(不指定 return type ,能和任何类型的cursor 变量匹配) 的ref 游标
TYPE my_ctype IS REF CURSOR;
stud_cur my_ctype;