1

我创建了一个 RefCursor 类型的包。

我在我的存储过程中使用包。

代码如下所示:

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')然后

// 一些查询;

万一

我将传递参数标准的值。

根据条件的值,我想执行不同的查询。

4

2 回答 2

1

首先,没有必要REF CURSOR在 10g 的 TYPES 包中定义弱类型。这在一些旧版本中是必需的,但 OracleSYS_REFCURSOR现在有一个类型。

其次,您的过程无法编译,因为没有声明 variable 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;
于 2011-04-28T18:26:29.053 回答
0

sys_refcursor仍然是一个弱类型的引用游标。查看sys_refcursor数据字典中的定义,您将看到:

type sys_refcursor是参考光标;

于 2018-07-26T11:56:11.360 回答