2017-08-01 8 views
1

私はoracle apex IRクエリで最大の機能を使用して最大の3つのテーブルから最大のものを表示しようとしています。そのために、2つのvarchar2型関数を作成しました。Apexインタラクティブ・レポートORA-1843

それらの

1つの日付を返すが、このような選択された表の、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; 

Iそれはうまく動作しているSQLコマンドで呼び出すが、対話型のレポートでは全く同じクエリを使用してORA-1843を返して失敗する。

助けてもらえますか?単純に変換せずに、DATE

、日付型のシール変数を、返すRETURN_DATESを変更

答えて

1

は、頂点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') 
関連する問題