如此定义一个类型(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 ;
本文介绍如何在Oracle中定义游标类型并创建一个通用的过程,该过程可根据输入参数选择不同的表进行查询。通过定义一个包来声明游标类型,并通过一个过程实现根据条件动态打开不同表的游标。
508

被折叠的 条评论
为什么被折叠?



