[英]Using if condition blocks with Refcursor in Pl/SQl
我创建了一个 RefCursor 类型的 package。
我在我的存储过程中使用 package。
代码如下所示:
CREATE OR REPLACE PACKAGE PRODDB.types
AS
type cursorType is ref cursor;
END;
CREATE OR REPLACE PROCEDURE PRODDB.P_Get_AdminPLCReport
(
Final_Output out TYPES.cursorType
)
AS
BEGIN
IF( Criteria='1') THEN
OPEN Final_Output FOR
SELECT Personal_Information.F_Salutation
FROM Allotment_Information;
END IF;
END P_Get_AdminPLCReport;
我想在这个存储过程中使用两个 if 条件。
我是 Pl-Sql 的新手。
任何人都可以通过告诉我这个语法来帮助我。
谢谢
--
更新
谢谢贾斯汀( 在这里回复),
但我想使用两个条件,如:
如果(标准 = '1')然后
// 一些查询; 万一
如果(标准 = '2')然后
// 一些查询;
万一
我将传递参数标准的值。
根据条件的值,我想执行不同的查询。
首先,没有必要在 10g 的 TYPES package 中定义弱类型的REF CURSOR
。 这在一些旧版本中是必需的,但 Oracle 现在有一个SYS_REFCURSOR
类型。
其次,您的过程无法编译,因为没有声明变量Criteria
。 我将忽略这一点,并假设您已在其他地方声明并初始化了该变量。
根据第二个条件是什么,最简单的选择通常是
CREATE OR REPLACE PROCEDURE PRODDB.P_Get_AdminPLCReport
(
Final_Output OUT sys_refcursor
)
AS
BEGIN
IF( criteria = '1' and someOtherCriteria = '2' )
THEN
OPEN final_output FOR
SELECT personal_information.f_salutation
FROM allotment_information;
END IF;
END p_get_adminPLCReport;
sys_refcursor
仍然是弱类型的 ref cursor。 查看数据字典中sys_refcursor
的定义,您将看到:
type sys_refcursor
是 ref cursor;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.