Oracle数据库学习笔记之游标
来源:互联网 发布:牛头701在淘宝叫什么 编辑:程序博客网 时间:2024/06/14 03:53
游标(光标):用来处理数据库中临时得到的数据,默认情况下Oracle数据库之允许在同一个会话中,打开300个光标
连接到system as sysdba 使用show parameter cursor可以查看到默认光标数(show parameter查看关键词的参数设置)
alter system set open_cursors=400 scope=both; --scope的取值memory(只更改当前值,不更改参数文件),spfile(只更改参数文件,不更改当前值,数据库需要重新启动才可生效),both(当前值和参数文件同时更改)
游标的分类
隐式游标--系统提供
执行更新,删除,添加和查询一条数据
隐式游标属性
(1)sql%rowcount 执行DML操作时返回的行数 返回整形
(2)sql%found 值是true表示操作成功
(3)sql%notfound: 和sql%found相反
(4)sql%isopen:游标是否是打开状态
没有参数的游标
(1)声明游标:
cursor 游标名 is select 语句;
(2)打开游标
open 游标名;
(3)关闭游标
close 游标名;
(4)取出游标的值
fetch 游标名 into 变量;
(5)显示游标的属性 游标名%属性
%rowcount 返回执行行数
%found 最近一条fetch语句是否取到结果 返回true有结果
%notfound 同%found相反
%isopen 游标是否打开
例:使用游标循环输出所有人的姓名和工资
declare
c_ename emp.ename%type;
c_sal emp.sal%type;
cursor c_emp is select ename,sal from emp;
begin
open c_emp;
loop
fetch c_emp into c_ename,c_sal;
dbms_output.put_line(c_ename||','||c_sal);
exit when c_emp%notfound;
end loop;
close c_emp;
end;
带参数的游标
声明:
cursor 游标名(变量名 数据类型,...) is select语句;
打开游标传入参数
open 游标名(实参);
注:参数设置数据类型时不指定长度
变量传递参数给游标
注:打开游标前给变量赋值;
例:--变量传参给游标 --根据job 和deptno查询员工empno 和ename
declare
cursor emp_info(ujob varchar2,udeptno number) is
select empno,ename from emp where job=ujob and deptno=udeptno;
uname emp.ename%type;
uno emp.empno%type;
begin
--打开游标前给变量赋值 (ujob:='ANALYST';udeptno:=20;)或直接在open的时候赋值
open emp_info('ANALYST',20);
loop
fetch emp_info into uno,uname;
exit when emp_info%notfound;
dbms_output.put_line(uno||','||uname);
end loop;
close emp_info;
end;
连接到system as sysdba 使用show parameter cursor可以查看到默认光标数(show parameter查看关键词的参数设置)
alter system set open_cursors=400 scope=both; --scope的取值memory(只更改当前值,不更改参数文件),spfile(只更改参数文件,不更改当前值,数据库需要重新启动才可生效),both(当前值和参数文件同时更改)
游标的分类
隐式游标--系统提供
执行更新,删除,添加和查询一条数据
隐式游标属性
(1)sql%rowcount 执行DML操作时返回的行数 返回整形
(2)sql%found 值是true表示操作成功
(3)sql%notfound: 和sql%found相反
(4)sql%isopen:游标是否是打开状态
没有参数的游标
(1)声明游标:
cursor 游标名 is select 语句;
(2)打开游标
open 游标名;
(3)关闭游标
close 游标名;
(4)取出游标的值
fetch 游标名 into 变量;
(5)显示游标的属性 游标名%属性
%rowcount 返回执行行数
%found 最近一条fetch语句是否取到结果 返回true有结果
%notfound 同%found相反
%isopen 游标是否打开
例:使用游标循环输出所有人的姓名和工资
declare
c_ename emp.ename%type;
c_sal emp.sal%type;
cursor c_emp is select ename,sal from emp;
begin
open c_emp;
loop
fetch c_emp into c_ename,c_sal;
dbms_output.put_line(c_ename||','||c_sal);
exit when c_emp%notfound;
end loop;
close c_emp;
end;
带参数的游标
声明:
cursor 游标名(变量名 数据类型,...) is select语句;
打开游标传入参数
open 游标名(实参);
注:参数设置数据类型时不指定长度
变量传递参数给游标
注:打开游标前给变量赋值;
例:--变量传参给游标 --根据job 和deptno查询员工empno 和ename
declare
cursor emp_info(ujob varchar2,udeptno number) is
select empno,ename from emp where job=ujob and deptno=udeptno;
uname emp.ename%type;
uno emp.empno%type;
begin
--打开游标前给变量赋值 (ujob:='ANALYST';udeptno:=20;)或直接在open的时候赋值
open emp_info('ANALYST',20);
loop
fetch emp_info into uno,uname;
exit when emp_info%notfound;
dbms_output.put_line(uno||','||uname);
end loop;
close emp_info;
end;
阅读全文
0 0
- Oracle数据库学习笔记之游标
- Oracle数据库学习10之游标
- Oracle学习笔记整理之游标篇
- Oracle学习笔记整理之游标篇
- Oracle学习笔记整理之游标篇
- Oracle游标学习笔记
- oracle学习笔记-游标
- Oracle学习笔记(通过游标操纵数据库)
- Oracle学习笔记:游标Cursor
- Oracle 之游标学习总结
- Oracle学习笔记之Oracle数据库管理
- SQL学习笔记之游标
- oracle数据库PL/SQL之游标
- Oracle数据库之PL/SQL游标
- (oracle学习笔记)游标实例:通过游标遍历合并数据
- ORACLE PL/SQL游标(cursor)学习笔记
- oracle学习笔记--游标(一)
- oracle学习笔记--游标(二)
- Linux-Ubuntu的三种权限
- 「NOIP2017模拟赛07.31」倒水
- 一类排列组合计数问题
- tow weeks(4)
- Spring的概念及作用
- Oracle数据库学习笔记之游标
- MVC4实现图片上传,裁剪和保存到服务器
- poj 3176 动态规划
- 英语单词中后缀-ee和-er的区别
- 单例模式——c++实现线程安全的单例类
- Java恢复练习笔记
- Oracle数据库学习笔记之异常处理,存储过程
- T626code学习笔记之浅谈Java垃圾回收(GC)
- poj 3264 (summerIII O) j树状数组 ST表(区间最值查询)