Apex互动报告ORA-1843

时间:2017-08-01 20:42:18

标签: oracle plsql oracle-apex-5

我正在尝试在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,使用完全相同的查询。

有人可以帮忙吗?

1 个答案:

答案 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')