oracle没有直接的返回List的方法,这里需要有包定义一个Cursor(游标)的返回类型。下面是我在计算收益率的一段代码,只做参考。
oracle包的写法如下:
CREATE OR REPLACE PACKAGE CAL_RTN_PACK IS
TYPE mycursor IS REF CURSOR;
PROCEDURE getRtnListByPid_proc (
p_pid IN tbsi_ante_port.p_id%TYPE,
x_rs OUT mycursor
);
END CAL_RTN_PACK;
create or replace package body cal_rtn_pack is
PROCEDURE getRtnListByPid_proc (
p_pid IN tbsi_ante_port.p_id%TYPE,
x_rs OUT mycursor
)
IS
v_start_date DATE; --每年第一个工作日
v_bm_id tbsi_ante_port.bm_id%TYPE;
v_bm_date DATE; --基准计算时间
v_p_date DATE; --基金开始时间
BEGIN
SELECT
min(bm_id) INTO v_bm_id
FROM tprt_bench_drill b
WHERE b.p_id = p_pid
AND b.isdefault = DECODE(b.isdefault, 1, 1, b.isdefault);
SELECT min(BEG_DATE) INTO v_bm_date
FROM tbsi_ant