Oracle游标,循环,动态变量,记录


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 10) is 
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 10) Is
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,
...
);