Oracle游标总结
1.声明游标
declare
teacher_id number(5);
teacher_name varchar2(5);
teacher_title varchar2(50);
teacher_sex char(1); cursor teacher_cur is
select tid,tiname,title,sex from teachers where tid<117;
2.打开游标
open 游标名;
declare
teacher_id number(5);
teacher_name varchar2(5);
teacher_title varchar2(50);
teacher_sex char(1); cursor teacher_cur is
select tid,tiname,title,sex from teachers where tid<117;
open teacher_cur;
3.提取游标
fetch 游标名 into 变量列表
declare
teacher_id number(5);
teacher_name varchar2(5);
teacher_title varchar2(50);
teacher_sex char(1); cursor teacher_cur is
select tid,tiname,title,sex from teachers where tid<117;
open teacher_cur;
fetch teacher_cur into tid,tinme,title,sex;
4.关闭游标
close 游标名
declare
teacher_id number(5);
teacher_name varchar2(5);
teacher_title varchar2(50);
teacher_sex char(1); cursor teacher_cur is
select tid,tiname,title,sex from teachers where tid<117;
open teacher_cur;
fetch teacher_cur into tid,tinme,title,sex;
Loop
EXIT WHEN NOT teacher_cur%FUND;
IF teaher_sex = 'M' THEN
INSERT INTO MALE_TEACHERS(TID,TNAME,TITLE) VALUES();
ELSE
INSERT INTO FEMALE_TEACHERS(TID,TNAME,TITLE) VALUES(teacher_id,teacher_name,teacher_title);
END IF;
FETCH teacher_cur INTO teacher_id,teacher_name,teacher_title,teacher_sex;
END LOOP;
CLOSE teacher_cur;
END;
使用显示游标:
1):使用前用游标名%ISOPEN检查打开状态,只有值为TRUE是才可使用
2):使用游标每次都要用%NOTFUND,%FUND确认是否返回成功
3):提取游标时对应变量个数一致
4):必须关闭游标释放资源
1.%fund是否找到有效行,是则为true 否则是false
open teacher_cur;
fetch teacher_cur into teacher_id,teacher_name,teacher_title,teacher sex;
loop
exit when not teacher_cur%found;
end loop
SQL%fund
delete from teachers
where tid=teacher_id;
if SQL%found then
insert into success values(tid);
else
insert into fail values(tid);
end if;
2.%NOTFOUND
OPEN teacher_cur;
FETCH teacher_cur INTO teacher_id,teacher_name,teacher_title,teacher_sex;
LOOP
EXIT WHEN teacher_cur%NOTFOUND;
END LOOP
SQL%NOTFOUND
DELETE FROM TEACHERS
WHERE TID = teacher_id;
IF SQL%NOTFOUND THEN
INSERT INTO FALL VALUES(TID);
ELSE
INSERT INTO SUCCESS VALUES(TID);
END IF;
3.%ROWCOUNT
该属性记录了游标抽取过的记录行数,也可以理解为当前游标所在的行号,这个属性在循环判断中有效
LOOP
FETCH teacher_our INTO teacher_id,teacher_name,teacher_title,teacher_sex;
EXIT WHEN teacher_cur%ROWCOUNT=10;--只抽取10条记录
...
END LOOP;
用FOR语句控制游标的循环,系统隐含的定义了一个数据类型为%ROWCOUNT的记录,作为循环计数器,并将隐士的打开和关闭游标
FOR teacher_record in teacher_cur LOOP --teacher_record作为记录名,隐含的代开游标teacher_cur
INSERT INTO TEMP TEACHERS(TID,TNAME,TITLE,SEX) VALUES(teacher_record,tid,teacher_record,tname,teacher_record,title,teacher_record.sex);
END LOOP
4.%ISOPEN
... ...
5.参数话游标:
DECLARE
--定义游标是带上参数CURSOR_ID
CURSOR teacher_cur(CURSOR_id NUMBER) IS
SELECT TNAME,TITLE,SEX FROM TEACHERS WHERE TID=CURSOR_id;--使用参数
BEGIN
OPEN teacher_cur(my_tid);--带上参数
LOOP
FETCH teacher_cur INTO teacher_name,teacher_title,teacher_sex;
EXIT WHEN teacher_cur%NOTFOUND;
...
END LOOP;
CLOSE teacher_cur;
END;
特殊的游标类型
declare
r_emp emp%ROWTYPE; --该类型为emp表中一行的类型
cursor c_emp is SELECT * FROM emp ;
BEGIN
OPEN c_emp;
LOOP
FETCH c_emp into r_emp; --游标中查询出来的一行into进定义的变量r_emp中
EXIT WHEN c_emp%NOTFOUND;
dbms_output.put_line('员工姓名:' || r_emp.ename);
END LOOP;
CLOSE c_emp;
END;
Oracle游标总结的更多相关文章
- Oracle 游标示例,带异常处理
Oracle游标示例一则,带异常处理. DECLARE CURSOR c_dl IS SELECT ID, NSRSBH, WSPZXH, ZXYY_DM, HZRQ, SWJG_DM, GXSJ F ...
- Oracle游标带参数
Oracle游标是可以带参数的,而SqlServer的游标就不可以了 create or replace procedure a as cursor b(c_id int)is select * fr ...
- Oracle 游标使用(转)
这个文档几乎包含了oracle游标使用的方方面面,全部通过了测试 ; ; dbms_output.put_line(sql) loop dbms_output.put_line( ; ; ; r_te ...
- Oracle 游标使用全解(转)
转自:http://www.cnblogs.com/sc-xx/archive/2011/12/03/2275084.html 这个文档几乎包含了oracle游标使用的方方面面,全部通过了测试 -- ...
- Oracle游标动态赋值
1. oracle游标动态赋值的小例子 -- 实现1:动态给游标赋值 -- 实现2:游标用表的rowtype声明,但数据却只配置表一行的某些字段时,遍历游标时需fetch into到精确字段 CREA ...
- dapper支持oracle游标
dapper支持oracle游标 Dapper是一个轻型的ORM类.它有啥优点.缺点相信很多朋友都知道了,园里也有很多朋友都有相关介绍,这里就不多废话. 如果玩过Oracle都知道,存储过程基本都是通 ...
- Oracle游标的使用示例
此文是使用Oracle游标的几种方式,for...in会自动打开游标,fetch...into需要手动打开游标,游标类似于一个只会往前移动的指针,每次指向数据集中的一行数据,通过游标可以打开数据集,也 ...
- Oracle游标介绍
Oracle游标使用详解: 游标: 用来查询数据库,获取记录集合(结果集)的指针,我们所说的游标通常是指显式游标,因此从现在起没有特别指明的情况,我们所说的游标都是指显式游标.要在程序中使用游标,必须 ...
- Oracle游标使用
Oracle游标介绍: --声明游标 CURSOR cursor_name IS select_statement --For 循环游标 --()定义游标 --()定义游标变量 --()使用for循环 ...
- [转载]Oracle 游标使用全解
这个文档几乎包含了oracle游标使用的方方面面,全部通过了测试 -- 声明游标:CURSOR cursor_name IS select_statement --For 循环游标--(1)定义游标- ...
随机推荐
- 修改delphi xe6 FMX Label字体颜色
delphi fmx的字体等设置默认与皮肤有关,用代码直接修改字体颜色等是无效的,如何才能用代码修改呢?请按以下方法就可以: 1.在Object inspector中取消StlyedSettings中 ...
- 如何在Qt 4程序中优化布局结构(表格讲解,很清楚)
原文地址:http://blog.csdn.net/qter_wd007/archive/2010/03/13/5377882.aspx 在迄今为止讲到每一个例子中,我们只是简单的把窗口部件放置到某个 ...
- 在sublime中使用less
高亮显示: 可以在Less文件中显示语法高亮,这样看起来会更舒服一些. 按下Ctrl+Shift+P调出命令面板:输入install调出Install Package选项并回车:输入less,选中并安 ...
- android 直接启动其他应用的Service
最近在做一个小插件,没有图标没有activity,利用其他APK启动它的service. 直奔主题,插件A,安装插件的应用B. B安装A后,由于A刚被安装,没有注册广播接收器,这里不考虑AIDL.需求 ...
- 解决VS2010无法打开,提示无法找到atl100.dll的方法
这个问题是卸载VS2010一些组件造成的误删问题,且从网上下的atl100.dll通常与自己的VS2010不符 解决方法: 从路径:C:\Program Files\Microsoft Visual ...
- mvc理念和thinkphp的语法特征 thinkphp引入模板
mvc即模型(model)-视图(view)-控制器(controller)的缩写 控制器很重要,功能性的东西要靠它实现,模型我还没接触到,只知道它对数据库负责,类似一个大控件吧... 速度... 一 ...
- Mac自定义隐藏或显示文件的快捷键
Mac自定义隐藏或显示文件的快捷键 本教程教大家学会自定义隐藏和显示文件夹的快捷键(Command+Shift+.). 1. 打开应用程序--Automator--选择"服务"-- ...
- WPF--Blend制作Button控件模板--问题补充
补充记录Button控件模板 控件模板制作过程中出现下图问题:动画对象不能用于动画属性"Fill” 并且这类问题Blend4中包括VS2010中仍然可以运行,但是只有VS2010中会报错:如 ...
- [CC]ccHObject
qCC_db中的ccHObject
- iOS tableViewCell侧滑改变收藏状态
/** * 图片素材 链接: http://pan.baidu.com/s/1mhi1sfQ 密码: w2wq */ #import <UIKit/UIKit.h> ...