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 ;
------解决思路----------------------
参考
------解决思路----------------------
--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调用即可。
函数很简单,可是有时候使用函数查询的值可能有多个结果。
那么如何让这个函数把这些结果都显示出来呢?
语句如下:
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调用即可。