我正在尝试在oracle apex IR查询中显示,这是来自3个不同表格的最大日期,使用最大功能来选择最大的。为此,创建了两个varchar2类型的函数。
其中一个返回转换为char的日期,所选表格如下:
create or replace FUNCTION RETURN_DATES (key in number, parameter in NUMBER)
RETURN VARCHAR2 IS
...
BEGIN
case parameter
when 1 then
select distinct MAX(mydate) into seal from table1 v WHERE v.num_contract = number_contract;
return NVL(TO_CHAR(TO_DATE (seal),'mm/dd/yyyy'),'01/01/1980')
when 2 then
select... from table2 x WHERE...
...
END;
第二个函数调用那个在参数调用之间使用最大函数的函数,它引用case语句:
create or replace FUNCTION RETURN_BIGGEST_DATE(key in number) return VARCHAR2 IS
...
BEGIN
select greatest (RETURN_DATES(key,1),RETURN_DATES(key,2),RETURN_DATES(key,3)) into greatest_date from dual;
return greatest_date;
...
END;
当我在sql命令上调用它时,它工作正常,但在交互式报告中它失败,返回ORA-1843,使用完全相同的查询。
有人可以帮忙吗?
答案 0 :(得分:1)
只需修改返回DATE的RETURN_DATES
和日期类型的密封变量,没有转换,在顶点IR工作正常! 我注意到当在ir查询中中继日期列时,列过滤器上有一个额外的参数,名为日期范围。这是双向流量来启动模拟并更改该功能的返回类型。
不需要进行任何更改:
create or replace FUNCTION RETURN_DATES (key in number, parameter in NUMBER)
RETURN DATE IS
...
select distinct MAX(mydate) into seal from table1 v WHERE v.num_contract = number_contract;
return NVL(seal),'01/01/1980')