【问题标题】:Apex Interactive Report ORA-1843Apex 交互式报告 ORA-1843
【发布时间】:2017-08-02 05:58:16
【问题描述】:

我正在尝试在 oracle apex IR 查询中显示 3 个不同表中的最大日期,使用最大的函数来选择最大的。为此,创建了两个 varchar2 类型的函数。

其中一个返回所选表格的转换为字符的日期,如下所示:

    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,使用完全相同的查询。

有人可以帮忙吗?

【问题讨论】:

    标签: oracle plsql oracle-apex-5


    【解决方案1】:

    只需修改返回 DATE 的 RETURN_DATES

    日期类型的 seal 变量,无需转换,在 apex 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')
    

    【讨论】:

      猜你喜欢
      • 2011-09-26
      • 2020-12-06
      • 1970-01-01
      • 1970-01-01
      • 2019-01-26
      • 2017-01-21
      • 1970-01-01
      • 1970-01-01
      • 2012-03-30
      相关资源
      最近更新 更多