Oracle10g 在Pl/SQl中使用带有Refcursor的if条件块
我创建了RefCursor类型的包 我正在存储过程中使用包 代码如下所示: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
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