Oracle游标的使用

下面的例子完整说明游标的声明,打开,提取关闭操作以及游标参数的传递方法.

 

Oracle游标使用的简单介绍
Oracle游标使用的简单介绍
Declare
Oracle游标使用的简单介绍DeptRec dept
%ROWTYPE;
Oracle游标使用的简单介绍dept_name dept.dname
@TYPE;
Oracle游标使用的简单介绍dept_loc dept.loc
%TYPE;
Oracle游标使用的简单介绍
Cursor c1 Is
Oracle游标使用的简单介绍
Oracle游标使用的简单介绍
Select dname,loc from dept
Oracle游标使用的简单介绍    
where deptno<=30;
Oracle游标使用的简单介绍
Cursor c2(dept_no number Default 10is 
Oracle游标使用的简单介绍
select dname,loc 
Oracle游标使用的简单介绍
from dept
Oracle游标使用的简单介绍
where deptno<=dept_no;
Oracle游标使用的简单介绍
Cursor c3(dept_no Number Default 10)
Oracle游标使用的简单介绍
Return dept%RowType
Oracle游标使用的简单介绍
Is
Oracle游标使用的简单介绍
Select * From Dept 
Oracle游标使用的简单介绍
where Deptno<=dept_no;
Oracle游标使用的简单介绍
Begin
Oracle游标使用的简单介绍
open c1;
Oracle游标使用的简单介绍
open c2(30);
Oracle游标使用的简单介绍Loop
Oracle游标使用的简单介绍
--循环提取c2游标中的数据
Oracle游标使用的简单介绍
Fetch c2 Into dept_name,dept_loc;
Oracle游标使用的简单介绍   
Exit When c2%NOTFOUND
Oracle游标使用的简单介绍DBMS_OUTPUT.PUT_LINE(DEpt_name 
||''||Dept_loc);
Oracle游标使用的简单介绍
End Loop;
Oracle游标使用的简单介绍
Open c3(dept_no>=20);
Oracle游标使用的简单介绍Loop
Oracle游标使用的简单介绍
--提取和处理c3游标中的数据
Oracle游标使用的简单介绍
Fetch c3 into DeptRec;
Oracle游标使用的简单介绍 
Exit When c3%NOTFOUND;
Oracle游标使用的简单介绍DBMS_OUTPUT.PUT_Line(DeptRec.deptno 
||':'|| DeptRec.dname);
Oracle游标使用的简单介绍
End Loop;
Oracle游标使用的简单介绍
close c1;
Oracle游标使用的简单介绍
close c2;
Oracle游标使用的简单介绍
close c3;
Oracle游标使用的简单介绍
End;
Oracle游标使用的简单介绍
Oracle游标使用的简单介绍


游标For循环

 

Oracle游标使用的简单介绍Declare
Oracle游标使用的简单介绍
Cursor c1(dept_no Number Default 10Is
Oracle游标使用的简单介绍
Select dname,loc From dept
Oracle游标使用的简单介绍
where deptno<=dept_no;
Oracle游标使用的简单介绍
Begin
Oracle游标使用的简单介绍
Oracle游标使用的简单介绍Dbms_OutPut.PUT_LINE(
'dept_no值为30');
Oracle游标使用的简单介绍
For c1_rec in c1(30) Loop
Oracle游标使用的简单介绍    DBms_OUTPUT.PUT_LINE(c1_rec.dname 
||':' || c1_rec.loc);
Oracle游标使用的简单介绍
End Loop;
Oracle游标使用的简单介绍
Oracle游标使用的简单介绍DBMS_OUTPUT.PUT_LINE(CHR(
10||':'||使用默认值为10:');
Oracle游标使用的简单介绍
Oracle游标使用的简单介绍
Oracle游标使用的简单介绍For c1_rec in c1 Loop
Oracle游标使用的简单介绍    DBms_OUTPUT.PUT_LINE(c1_rec.dname ||
':' || c1_rec.loc);
Oracle游标使用的简单介绍End Loop
Oracle游标使用的简单介绍
Oracle游标使用的简单介绍End;
Oracle游标使用的简单介绍
Oracle游标使用的简单介绍此外,PL/SQL 还允许在For 循环中使用子查询来实现游标的功能.
Oracle游标使用的简单介绍Begin
Oracle游标使用的简单介绍  For c1_rec In(select dname,loc From dept) Loop
Oracle游标使用的简单介绍      Dbms_OutPUT.PUT_LINE(c1_rec.dname ||
':' || c1_rec.loc);
Oracle游标使用的简单介绍end Loop;
Oracle游标使用的简单介绍end;
Oracle游标使用的简单介绍
Oracle游标使用的简单介绍


游标属性

%ISOPEN %FOUND %NOTFOUND %ROWCOUNT

声明游标变量
TYPE ref_type_name Is REF CURSOR [RETURN return_type]


例如:

Oracle游标使用的简单介绍Declare
Oracle游标使用的简单介绍TYPE DeptRecord 
Is Record
Oracle游标使用的简单介绍(
Oracle游标使用的简单介绍 deptno dept.deptno
%Type,
Oracle游标使用的简单介绍 dname dept.dname
%Type,
Oracle游标使用的简单介绍 loc   dept.loc
%Type
Oracle游标使用的简单介绍);
Oracle游标使用的简单介绍
Oracle游标使用的简单介绍Type DeptCurType 
Is Ref Cursor Return dept%ROWTYPE;
Oracle游标使用的简单介绍Type DeptCurTyp1 
is Ref Cursor Return DeptRecord;
Oracle游标使用的简单介绍Type CurType 
Is Ref CurSor;
Oracle游标使用的简单介绍
Oracle游标使用的简单介绍dept_c1 DeptCurType;
Oracle游标使用的简单介绍dept_c2 DeptCurTyp1;
Oracle游标使用的简单介绍cv CurType;
Oracle游标使用的简单介绍
Oracle游标使用的简单介绍


--------------------

定义动态变量和PL/SQL记录

定义列类型的PL/SQL变量语法
variable_name table_name.column_name%TYPE;

定义一个具有与表中行相同的字段的记录
record_name table_name%ROWTYPE

定义一个具有与游标中列相同的字段的记录
record_name cursor_name%ROWTYPE

PL/SQL记录
TYPE record_type_name Is
(field_name1 field_1_type,
field_name2 field_2_tupe,
...
);

相关文章: