declare
-- 1 声明一个游标
cursor emp_cursor is
select ID,XM,KSNO from ZGXX where rownum <= 10;
v_stu_info emp_cursor%rowtype;
-- %rowtype: 声明 emp表的所有字段
begin
-- 2 开启游标
open emp_cursor;
-- 3 获取数据(一次获取一行)循环获取 去掉loop ... end loop 则只查询一条
loop
fetch emp_cursor
into v_stu_info;
-- 游标查不到数据了则结束循环
exit when emp_cursor%notfound;
-- 打印输出到控制台 --可以处理到另外表中
dbms_output.put_line(v_stu_info.ID || ' : ' || v_stu_info.XM);
end loop;
-- 4 关闭游标
close emp_cursor;
end;
很久没写了,直接记录下使用心得,有时候感觉将一个表数据处理到另外表,使用INSERT语句一次性写完很麻烦,这样就可以使用游标的方式分开处理,当然进行实施运维该技能也是必不可少,新上项目的时候有很多数据需要实施人员后台快速转移好,或者造一些数据等。
摘抄了一段游标的解释,自己就不献丑瞎编了:
一、 游标
一、游标概述
1、游标是什么?
游标是SQL的一个内存工作区,由系统或用户以变量的形式定义,用来临时存储多条查询数据的一种数据结构(‘结果集’)。
2、游标分类
游标有两种类型:显式游标和隐式游标。在用到的SELECT…INTO…DELETE.语句,一次只能从数据库中提取一行数据,对于这种形式的查询和DML操作,系统都会使用一个隐式游标。但是如果要提取多行数据,就要由程序员定义一个显式游标( cursor is select ),并通过与游标有关的语句进行处理。
3 、优缺点
(1) 提高 sql ‘执行效率’
(2) 牺牲 ‘内存’
二、游标4大属性
属性 返回值类型 作用
SQL%ROWCOUNT 整型 代表DML语句成功执行的数据行数
SQL%FOUND 布尔型 值为**TRUE**代表插入、删除、更新或单行查询操作成功
SQL%NOTFOUND 布尔型 与SQL%FOUND属性返回值相反
SQL%ISOPEN 布尔型 判断游标是否 '开启'
--未完待续--