oracle表单12c中的Json_table函数
Posted
技术标签:
【中文标题】oracle表单12c中的Json_table函数【英文标题】:Json_table function in oracle forms 12c 【发布时间】:2020-11-24 12:45:13 【问题描述】:我对 oracle 表单相当陌生。我需要使用 json_table 函数。当我运行以下查询时,我收到下面提到的错误消息。但是当我在 sql developer 中运行相同的查询时,它可以工作。如果有人可以帮助我找出相同的根本原因,那就太好了。谢谢。
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 表单时遇到错误:
Compiling PRE-QUERY trigger on REVSHARE_PART_TO_DO data block...
Compilation error on PRE-QUERY trigger on REVSHARE_PART_TO_DO data block:
PL/SQL ERROR 103 at line 23, column 95
Encountered the symbol ";" when expecting one of the following:
) , * & = - + < / > at in is mod remainder not rem =>
<an exponent (**)> <> or != or ~= >= <= <> and or like like2
like4 likec between || multiset member submultiset
The symbol ")" was substituted for ";" to continue.
【问题讨论】:
【参考方案1】:对于最新版本的表单(10、11),即使是在表单中也无法进行显式连接。因此,您可以将查询放入数据库中的存储过程中,例如
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;
/
全部从当前的PRE-QUERY
触发器调用。
【讨论】:
嗨@Barbaros 遇到同样的错误,我正在使用 oracle 12c @VimalBhaskar 你能用代码编辑问题如何从触发器调用存储过程吗?以上是关于oracle表单12c中的Json_table函数的主要内容,如果未能解决你的问题,请参考以下文章
oracle sql中的JSON_TABLE未捕获嵌套的json数据
JPA 标准 API 和 Oracle JSON_TABLE 函数