【发布时间】:2015-09-05 12:35:04
【问题描述】:
我想知道当返回值是下面代码中的关联数组时,函数返回应该是什么数据类型:
create or replace FUNCTION GET_DAYS
(
DAY_IDS IN VARCHAR2 ,
FromDate IN Date,
Todate IN Date
) RETURN split_tbl /*SYS.ODCINUMBERLIST*/ AS
BEGIN
DECLARE
D_LIST split_tbl;
TYPE weekdays IS TABLE OF number INDEX BY PLS_INTEGER;
D_Date split_tbl:=split_tbl();
j number:=1;
m number:=1;
K NUMBER:=1;
weeks number:=1;
t_weeks number:=0;
u number;
wday char(3);
f_date date:=fromdate;
BEGIN
D_LIST := SPLIT2(DAY_IDS);
WHILE j <= D_LIST.count loop
u:=nvl(d_list(j),0);
select count(*) into m from days where (day_id)=u;
if m=1 then
select day into wday from days where (day_id)=u;
t_weeks:=(next_day(To_date(todate,'DD-Mon-RRRR'),wday)-next_day(To_date(f_date,'DD-Mon-RRRR'),wday))/7;
while (next_day(To_date(todate,'DD-Mon-RRRR'),wday)-next_day(To_date(f_date,'DD-Mon-RRRR'),wday))/7 >=1
loop
d_date.extend(nvl(t_weeks,0));
D_DATE(K):=to_char(weeks);
f_date:=f_date+7;
weeks:=weeks+1;
K:=K+1;
end loop;
end if;
j:=j+1;
END loop;
K:=0;
/*
while k<=d_date.count loop
d_date.extend(2000);
if(d_date(K)=null) then
d_date.delete(K);
end if;
end loop;
*/
RETURN D_Date;
END;
END GET_DAYS;
我已经在使用由 varchar2 创建的关联数组 D_List,但我需要它的数量。
【问题讨论】:
-
什么是接收部分。默认情况下,php oci8 会执行此操作。您也可以使用 sys_refcursor 或
CREATE OR REPLACE TYPE CUST_OBJ AS OBJECT (/* list of variables eg. myid number, myval varchar2(255) etc. */); CREATE OR REPLACE TYPE OBJ_TBL IS TABLE OF CUST_OBJ;之类的用户类型。然后使用oci,制作OBJ_TBL的自定义集合,绑定它,运行查询并获取结果。 -
函数有什么作用?该函数的一些示例输入和您的预期输出是什么?您是否尝试过返回
SYS.ODCINUMBERLIST(并将D_DATE改成那种类型)?SPLIT2函数有什么作用? -
split2 是另一个在 varchar2 中返回关联数组的函数
-
你的函数是做什么的?什么进去,你期望出来什么?
-
我只想返回包含第 1,2,3 周的数组 ...
标签: oracle