我在inc_list变量中有这个json:
{"datalist":[
{
"idnumber":"123",
"value":"Name"
},
{
"idnumber":"999",
"value":"Name1"
}]
}我需要在select语句中使用*number“for IN子句的值。
TYPE value_list_type IS TABLE OF varchar2(30);
value_list value_list_type;
SELECT VALUE BULK COLLECT
INTO VALUE_LIST
FROM TABLE1
WHERE TABLE1.id in
(
SELECT id
FROM JSON_TABLE(inc_list, '$.datalist[*]'
COLUMNS(id VARCHAR2 PATH '$.idnumber')
)
);但是它会导致这个错误:ORA-00600: internal error code, arguments: [qmxptAddDependency1]
我不明白为什么。
你能帮帮我吗?
向你致敬,马可
发布于 2021-01-30 04:59:28
实验(在较小的测试用例上)表明,no_unnest提示可能会阻止优化器执行无效操作(这似乎是导致此错误的原因)。试一试,看看是否有帮助。
查询应如下所示:
...
where table1.id in
(
select /*+ NO_UNNEST */ id -- add /*+ NO_UNNEST */ here
from json_table(.......)
...
)请注意,提示的确切语法和提示的确切位置至关重要。(但提示可以是小写或大写。)
https://stackoverflow.com/questions/65959082
复制相似问题