游标:
- SQL 的一个内存工作区存放查询出来的记录,由系统或用户以变量的形式定义
- 为了查看或处理查询结果集中的数据,游标提供了在结果集中一次一行或者多行前进或向后浏览数据的能力
- 可以把游标当作一个指针,它可以指定结果中的任何位置,然后允许用户对指定位置的数据进行处理
- 游标一旦打开,数据就从数据库中传送到游标变量中,然后应用程序再从游标变量中分解出需要的数据,并进行处理
oracle中的游标分为隐式游标和显示游标
DML 操作和单行 SELECT 语句会使用隐式游标,如:
- 插入操作:INSERT
- 更新操作:UPDATE
- 删除操作:DELETE
- 单行查询操作:SELECT … INTO …
可以通过隐式游标的属性来了解操作的状态和结果,进而控制程序的流程。隐式游标的属性如下:
- %ROWCOUNT — 整型,代表 DML 语句成功执行的数据行数
- %FOUND — 布尔型,值为 TRUE 代表插入、删除、更新或单行查询操作成功
- %NOTFOUND — 布尔型,与 %FOUND 属性值相反
- %ISOPEN — 布尔型,DML 执行过程中为真,执行结束后为假
显示游标可以对查询语句(select)返回的多条记录进行处理
游标的使用步骤:
- 声明一个游标:cursor cursor_name[ 参数1 参数类型,参数2,参数类型…] is select 语句
- 打开游标 open 游标名(参数1,参数2..)
- 使用循环遍历游标,从游标中取值。fetch 游标名 into 变量名,循环的退出条件是 游标名 %notfound
- 关闭游标 close 游标名