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

Oracle10g 在Pl/SQl中使用带有Refcursor的if条件块,oracle10g,if-statement,sys-refcursor,Oracle10g,If Statement,Sys Refcursor,我创建了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

我创建了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

谁能告诉我这个的语法吗

塔克斯

--

更新

Thanx Justin()

但我想使用两个条件,比如:

如果(条件='1'),则

//一些疑问;如果结束

如果(标准='2'),则

//一些疑问

如果结束

我将通过参数标准的值


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

首先,不需要在10g中的TYPES包中定义弱类型的
REF游标。这在一些旧版本中是必要的,但Oracle现在有了一个
SYS\u REFCURSOR
类型

其次,您的过程没有编译,因为没有变量
条件的声明。我将忽略这一点,并假设您已经在别处声明并初始化了变量

根据第二个条件的不同,最简单的选项通常是

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;

首先,不需要在10g的TYPES包中定义弱类型的
REF游标。这在一些旧版本中是必要的,但Oracle现在有了一个
SYS\u REFCURSOR
类型

其次,您的过程没有编译,因为没有变量
条件的声明。我将忽略这一点,并假设您已经在别处声明并初始化了变量

根据第二个条件的不同,最简单的选项通常是

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\u refcursor
仍然是弱类型的ref cursor。查看数据字典中的
sys\u refcursor
定义,您将看到:


类型sys\u refcursor
为ref cursor

sys\u refcursor
仍然是弱类型的ref cursor。查看数据字典中的
sys\u refcursor
定义,您将看到:

类型sys\u refcursor
为ref cursor