创建游标变量:
l
定义REF CRUSOR类型,然后声明该类型的变量。
l
声明SYS_REFCURSOR的变量,一个游标变量被称为REF CURSOR(引用游标)
一个REF CURSOR类型基本的语句定义:
TYPE type_name IS REF CURSOR [ RETURN return_type ]
如果指定了return_type,则定义的引用游标变量和声明该类型的变量就是强类型,否则
为弱类型。SYS_REFCURSOR类型和他的变量都为弱类型。对于强类型的游标变量,可以把
返回指定类型的查询和他关联。对于弱类型的游标变量,可以与任何查询关联。弱类型的
引用游标可以互相转换,也可以与SYS_REFCURSOR互相转换。可以将一个强类型的游标变
量赋值给一个弱类型的游标变量;只有当2个强类型游标变量具有相同的类型,可以进行
赋值。
在本次版本中 RETURN只是语法实现,所以游标类型实际都是弱游标。
CREATE OR REPLACE PROCEDURE P_6_20 AS
TYPE empcurtyp IS REF CURSOR RETURN employees%ROWTYPE; -- strong type
TYPE genericcurtyp IS REF CURSOR; -- weak type
cursor1 empcurtyp; -- strong cursor variable
cursor2 genericcurtyp; -- weak cursor variable
my_cursor SYS_REFCURSOR; -- weak cursor variable
TYPE deptcurtyp IS REF CURSOR RETURN departments%ROWTYPE; -- strong type
dept_cv deptcurtyp; -- strong cursor variable
GBase 8s PL/SQL手册
南大通用数据技术股份有限公司
- 111 -
BEGIN
NULL;
END;
CREATE OR REPLACE PROCEDURE P_6_21 AS
TYPE EmpRecTyp IS RECORD (
employee_id NUMBER,
last_name VARCHAR2(25),
salary NUMBER(8,2));
TYPE EmpCurTyp IS REF CURSOR RETURN EmpRecTyp;
emp_cv EmpCurTyp;
BEGIN
NULL;
END;