繁体   English   中英

在 Pl/SQl 中使用带有 Refcursor 的 if 条件块

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM