oracle forms 12c中的Json_表函数

oracle forms 12c中的Json_表函数,oracle,plsql,oracleforms,Oracle,Plsql,Oracleforms,我对oracle表单相当陌生。我需要使用json_表函数。当我运行下面的查询时,我得到下面提到的错误消息。但是,当我在SQLDeveloper中运行相同的查询时,它可以工作。如果有人能帮我找出原因,那就太好了。多谢各位 SELECT RPTD.GROUP_TODO_ID, query_json.event_id into :GLOBAL.RVS_ID,:GLOBAL.RV_EV_ID FROM RGTD , RPTD ,json_table(RGT

我对oracle表单相当陌生。我需要使用json_表函数。当我运行下面的查询时,我得到下面提到的错误消息。但是,当我在SQLDeveloper中运行相同的查询时,它可以工作。如果有人能帮我找出原因,那就太好了。多谢各位

SELECT RPTD.GROUP_TODO_ID,
       query_json.event_id
  into :GLOBAL.RVS_ID,:GLOBAL.RV_EV_ID
  FROM RGTD ,
       RPTD
      ,json_table(RGTD.REVSHARE_INFO, '$' COLUMNS ( NESTED PATH '$.revenueShareFunds[*]' COLUMNS ( ID 
                  VARCHAR2(10) PATH '$.rapId' , EVENT_ID VARCHAR2(12) PATH '$.revenueShareEventId'))) 
                  query_json
  WHERE QUERY_JSON.ID = 'xxxxx'
    AND RGTD.ID             = RPTD.GROUP_TODO_ID
    AND rownum              =1;
编译12c oracle表单时出错:
正在对REVSHARE\u PART\u TO\u DO数据块编译预查询触发器。。。
REVSHARE\u PART\u TO\u DO数据块上的预查询触发器上的编译错误:
第23行第95列的PL/SQL错误103
在预期出现以下情况时遇到符号“;”:
),*&=-+在in处为mod余数而非rem=>

或者!=或者~=>=对于最新版本的表单(1011),即使在表单中显式连接也是不可能的。因此,您可以将查询放入数据库中的存储过程中,例如

CREATE OR REPLACE PROCEDURE Get_ID_Values( 
                                           i_json_id  IN  VARCHAR2, 
                                           o_rvs_id   OUT rptd.group_todo_id%type, 
                                           o_rv_ev_id OUT VARCHAR2, 
                                           o_error    OUT VARCHAR2 
                                          ) 
AS
BEGIN
    SELECT rptd.group_todo_id, query_json.event_id
      INTO o_rvs_id, o_rv_ev_id
      FROM rgtd
      JOIN rptd
        ON rgtd.id = rptd.group_todo_id
     CROSS JOIN json_table(rgtd.revshare_info,
                      '$' COLUMNS(NESTED PATH '$.revenueShareFunds[*]'
                              COLUMNS(id VARCHAR2(10) PATH '$.rapId',
                                      event_id VARCHAR2(12) PATH
                                      '$.revenueShareEventId'))) query_json
     WHERE query_json.id = i_json_id
       AND rownum = 1;
  EXCEPTION WHEN no_data_found THEN o_error := 'No Data Found';
            WHEN   others      THEN o_error := sqlerrm;      
END;
/

所有人都从当前的
预查询
触发器调用它。

Hi@Barbaros收到相同的错误,我正在使用oracle12c@VimalBhaskar您能用代码编辑问题吗?如何从触发器调用存储过程?
CREATE OR REPLACE PROCEDURE Get_ID_Values( 
                                           i_json_id  IN  VARCHAR2, 
                                           o_rvs_id   OUT rptd.group_todo_id%type, 
                                           o_rv_ev_id OUT VARCHAR2, 
                                           o_error    OUT VARCHAR2 
                                          ) 
AS
BEGIN
    SELECT rptd.group_todo_id, query_json.event_id
      INTO o_rvs_id, o_rv_ev_id
      FROM rgtd
      JOIN rptd
        ON rgtd.id = rptd.group_todo_id
     CROSS JOIN json_table(rgtd.revshare_info,
                      '$' COLUMNS(NESTED PATH '$.revenueShareFunds[*]'
                              COLUMNS(id VARCHAR2(10) PATH '$.rapId',
                                      event_id VARCHAR2(12) PATH
                                      '$.revenueShareEventId'))) query_json
     WHERE query_json.id = i_json_id
       AND rownum = 1;
  EXCEPTION WHEN no_data_found THEN o_error := 'No Data Found';
            WHEN   others      THEN o_error := sqlerrm;      
END;
/