ORACLE的函数怎么返回多个值

ORACLE的函数如何返回多个值?
函数很简单,可是有时候使用函数查询的值可能有多个结果。
那么如何让这个函数把这些结果都显示出来呢?
语句如下:
CREATE OR REPLACE FUNCTION TEST_FN_INPUNCH1 --上班时间1
(P_NUM VARCHAR2,
P_DATE DATE)
 RETURN DATE IS
 INPUNCH1 DATE;
 BEGIN
 SELECT STARTDTM INTO INPUNCH1 FROM VP_TIMESHEETITMV42 

 WHERE PERSONNUM=P_NUM 
 AND EVENTDATE=P_DATE;

  RETURN INPUNCH1;
 END ;
------解决思路----------------------
参考
declare 
       --类型定义
       cursor c_job
       is
       select empno,ename,job,sal
       from emp
       where job='MANAGER';
       --定义一个游标变量
       c_row c_job%rowtype;
begin
       open c_job;
         loop
           --提取一行数据到c_row
           fetch c_job into c_row;
           --判读是否提取到值,没取到值就退出
           --取到值c_job%notfound 是false 
           --取不到值c_job%notfound 是true
           exit when c_job%notfound;
            dbms_output.put_line(c_row.empno
------解决思路----------------------
'-'
------解决思路----------------------
c_row.ename
------解决思路----------------------
'-'
------解决思路----------------------
c_row.job
------解决思路----------------------
'-'
------解决思路----------------------
c_row.sal);
         end loop;
       --关闭游标
      close c_job;
end;

------解决思路----------------------
--1.定义过程,返回游标
create or replace procedure procedure_name --过程名
(
    v_sdate          in varchar2,
    v_edate          in varchar2,

    v_cur            OUT pack_name.record_cur,--此处定义一个record记录的集合(定义在一个包里,里面具体定义需要返回多少列)

    v_retyrn_result  OUT VARCHAR2
)

begin
       OPEN v_cur FOR select * from table_name;              
    
end;


--2.以上返回的游标结果集合的定义
CREATE OR REPLACE PACKAGE pack_name AS

  TYPE record_name IS RECORD(
    F1  VARCHAR2(200),
    F2  VARCHAR2(200),
    F3  VARCHAR2(200));
   --需要多少列,什么类型,自己定义
  TYPE record_cur IS REF CURSOR RETURN record_name;

END;

--3.前台java调用即可。