pl/sql游标
来源:互联网 发布:怎么备案域名 编辑:程序博客网 时间:2024/05/12 23:44
游标的使用步骤分为:声明游标,打开游标,读取数据和关闭游标。
游标使用例子:
每次使用fetch之后,游标计数会加一(如下可以证明):
使用fetch ... bulk collect into语句:
还可以用for ... in使用游标:
游标有4个属性:
可以创建带一个或多个参数的游标(方便传入值到查询语句中):
隐式游标:oracle执行语句的时候自动产生,不受用户控制。
游标使用例子:
declare
CURSORloop_curisselect*fromsys_cust tWHERErownum<10;
row_cust sys_cust%rowtype;
begin
openloop_cur;
loop
fetchloop_curintorow_cust;
exitwhenloop_cur%notfound;
DBMS_OUTPUT.PUT_LINE(row_cust.custid);
endloop;
closeloop_cur;
end;
每次使用fetch之后,游标计数会加一(如下可以证明):
declare
CURSORloop_curisselect*fromsys_cust tWHERErownum<4;
row_cust sys_cust%rowtype;
begin
openloop_cur;
loop
DBMS_OUTPUT.PUT_LINE(loop_cur%rowcount);
fetchloop_curintorow_cust;
DBMS_OUTPUT.PUT_LINE(loop_cur%rowcount);
exitwhenloop_cur%notfound;
DBMS_OUTPUT.PUT_LINE(loop_cur%rowcount);
DBMS_OUTPUT.PUT_LINE('-----------------------------------------------');
endloop;
closeloop_cur;
end;
输出如下:
可以看出,打开游标之后,游标指向第0行,fetch每次把当前游标的下一行返回。
使用fetch ... bulk collect into语句:
使用fetch...bulk collect into 语句一次可以返回多行,效率比fetch ... into高,例子如下:
declare
CURSORloop_curisselect*fromsys_cust tWHERErownum<10;
typerow_cust_typeistableofsys_cust%rowtype;
row_cust row_cust_type;
begin
openloop_cur;
loop
fetchloop_curbulkcollectintorow_custlimit3;
foriin1..row_cust.countloop
DBMS_OUTPUT.PUT_LINE(row_cust(i).custid);
endloop;
exitwhenloop_cur%notfound;
endloop;
closeloop_cur;
end;
测试使用fetch...bulk collect into 游标计数的变化:
declare
CURSORloop_curisselect*fromsys_cust tWHERErownum<11;
typerow_cust_typeistableofsys_cust%rowtype;
row_cust row_cust_type;
begin
openloop_cur;
loop
DBMS_OUTPUT.PUT_LINE(loop_cur%rowcount);
fetchloop_curbulkcollectintorow_custlimit4;
DBMS_OUTPUT.PUT_LINE(loop_cur%rowcount);
exitwhenloop_cur%notfound;
DBMS_OUTPUT.PUT_LINE(loop_cur%rowcount);
DBMS_OUTPUT.PUT_LINE('----------------');
endloop;
closeloop_cur;
end;
结果如下:
还可以用for ... in使用游标:
declare
CURSORloop_curisselect*fromsys_cust tWHERErownum<10;
begin
forcinloop_curloop
DBMS_OUTPUT.PUT_LINE(c.custid);
endloop;
end;
游标有4个属性:
%isopen:表示游标是否打开;
%found:用来检测游标是否返回数据,返回true表示游标返回了数据。
%notfound:和%found相反。
%rowcount:表示当前游标指向。
可以创建带一个或多个参数的游标(方便传入值到查询语句中):
declare
CURSORloop_cur(ninteger)isselect*fromsys_cust tWHERErownum<n;
row_cust sys_cust%rowtype;
begin
openloop_cur(10);
loop
fetchloop_curintorow_cust;
exitwhenloop_cur%notfound;
DBMS_OUTPUT.PUT_LINE(row_cust.custid);
endloop;
closeloop_cur;
end;
结果如下:
隐式游标:oracle执行语句的时候自动产生,不受用户控制。
0 0
- PL/SQL游标
- PL/SQL中的游标
- PL/SQL游标
- Oracle PL/SQL游标
- PL/SQL:游标
- PL/SQL游标总结
- 初学PL/SQL 游标
- PL/SQL游标描述
- PL/SQL --> 游标
- PL/SQL游标使用
- PL/SQL 游标变量
- pl/sql游标
- PL/SQL 游标变量
- PL/SQL游标
- PL/SQL游标使用
- PL/SQL游标使用
- oracle pl sql 游标
- PL/SQL游标
- xcode 清理空间
- android学习笔记——Fragment(碎片)
- 二进制中1的个数
- 特征选择常用算法综述
- 数据库
- pl/sql游标
- linux打包与压缩命令
- android学习笔记——Fragment最佳实践
- project euler 74
- 数值的整数次方
- 第三篇 Java类文件结构
- android学习笔记——ExpandableListView学习
- zzuli--1812--sort(模拟水题)
- 调整数组顺序使奇数位于偶数前面