如此定义一个类型(RETURN return_type在下面的例子中应该省略)
CREATE OR REPLACE PACKAGE cv_types AS
-- TYPE GenericCurTyp is REF CURSOR RETURN return_type;
TYPE GenericCurTyp is REF CURSOR;
END cv_types;
过程如此建立。
PROCEDURE open_cv (generic_cv IN OUT cv_types.GenericCurTyp, choice NUMBER) IS
BEGIN
IF choice = 1 THEN
OPEN generic_cv FOR SELECT * FROM emp;
ELSIF choice = 2 THEN
OPEN generic_cv FOR SELECT * FROM dept;
ELSIF choice = 3 THEN
OPEN generic_cv FOR SELECT * FROM salgrade;
END IF;
END;
注意:返回的游标必须是第一个参数,且要指明参数类型为ftCursor
相信对你会很有帮助。
不足:oracle现在不能返回动态SQL的查询结果。
但可以使用以下方法达到同样的效果
OPEN generic_cv FOR 'SELECT * FROM emp WHERE empid > '|| Parameter ;
CREATE OR REPLACE PACKAGE cv_types AS
-- TYPE GenericCurTyp is REF CURSOR RETURN return_type;
TYPE GenericCurTyp is REF CURSOR;
END cv_types;
过程如此建立。
PROCEDURE open_cv (generic_cv IN OUT cv_types.GenericCurTyp, choice NUMBER) IS
BEGIN
IF choice = 1 THEN
OPEN generic_cv FOR SELECT * FROM emp;
ELSIF choice = 2 THEN
OPEN generic_cv FOR SELECT * FROM dept;
ELSIF choice = 3 THEN
OPEN generic_cv FOR SELECT * FROM salgrade;
END IF;
END;
注意:返回的游标必须是第一个参数,且要指明参数类型为ftCursor
相信对你会很有帮助。
不足:oracle现在不能返回动态SQL的查询结果。
但可以使用以下方法达到同样的效果
OPEN generic_cv FOR 'SELECT * FROM emp WHERE empid > '|| Parameter ;