首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Select from JSON_TABLE in where IN条件

Select from JSON_TABLE in where IN条件
EN

Stack Overflow用户
提问于 2021-01-30 01:27:25
回答 1查看 86关注 0票数 0

我在inc_list变量中有这个json:

代码语言:javascript
复制
{"datalist":[
   {
     "idnumber":"123", 
     "value":"Name"   
   },
   {
     "idnumber":"999", 
     "value":"Name1"   
   }]
}

我需要在select语句中使用*number“for IN子句的值。

代码语言:javascript
复制
            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]

我不明白为什么。

你能帮帮我吗?

向你致敬,马可

EN

回答 1

Stack Overflow用户

发布于 2021-01-30 04:59:28

实验(在较小的测试用例上)表明,no_unnest提示可能会阻止优化器执行无效操作(这似乎是导致此错误的原因)。试一试,看看是否有帮助。

查询应如下所示:

代码语言:javascript
复制
...
where table1.id in 
(
    select /*+ NO_UNNEST */ id         --  add /*+ NO_UNNEST */ here
    from json_table(.......)
    ...
)

请注意,提示的确切语法和提示的确切位置至关重要。(但提示可以是小写或大写。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65959082

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档