【问题标题】:PL/SQL json_table function gives error for large JSON documentPL/SQL json_table 函数为大型 JSON 文档提供错误
【发布时间】:2021-06-25 10:45:56
【问题描述】:

使用 Oracle 12.1,而不是 12.2,在大字符串上使用 JSON_TABLE 时出现此错误。

Error report:
ORA-01460: unimplemented or unreasonable conversion requested
ORA-06512: at line 1801
01460. 00000 -  "unimplemented or unreasonable conversion requested"
*Cause:    
*Action:

代码是:

VAR jsonstr CLOB;
EXEC :jsonstr := '{"jevents":[{"header":{"hdClassType":3,"hdTypeIdentifier":{"type":"A"},"hdEventInstance":"6D71E8C4-F37F-A359-E053-6701100AB504.2021-06-17T17:28:39.710","hdDetectionTime":"2021-06-17T17:28:39.710","hdSource":"E8AC92BC-9C07-EB74-E053-0100007F6A02","hdAnnotation":"Annotation Alarm","hdOffsetTime":"1","hdIdentity":"1cbe6731-36d6-4587-8ad9-482e50f4cfc9","hdMaterialized":false,"hdToSibling":null,"hdCertainty":1,"hdGranularity":"m","hdToParent":null,"hdTTL":"0","hdToChild":null,"hdScenario":"1","hdInternalEventIdentifier":"E8AC92BC-9C07-EB74-E053-0100007F6A02","hdOccurrenceTime":"2021-06-17T17:28:39.710","hdFacts":null},"payLoadType":{"alarm":{"almNormalTime":null,"almOII":"","almDescription":null,"almCode":"ADWFAILURE","almOIC":{"documentCode":"DocumentCode","oicString":"TSAO_STCN_AIDWHARM1EIIA_001_AIDWHETHSEIIA_002_ADWFAILURE","annotation":"Annotation","oic":{"spn":"AIDWHETHSEIIA","area":"TSAO","oicIdentity":"6D71E8C4-F37F-A359-E053-6701100AB504","serial":null,"mpnp":"001","mpn":"AIDWHARM1EIIA","spnp":"002","location":"STCN","signal":"ADWFAILURE","spare":null},"version":"1"},"almOperator":"DWH","almAutomatic":"1","almPriority":"4","almState":"3","almRole":"DWH","almAckTime":"2021-06-17T17:28:39.710","almConsole":"","almOICExt":{"des01":"TID","des02":null,"des03":null,"val03":null,"val01":"","val02":null,"spare":null},"almInitTime":"2021-06-17T17:28:39.710"},"label":null,"time":null,"measurement":null,"command":null,"status":null}},{"header":{"hdClassType":3,"hdTypeIdentifier":{"type":"M"},"hdEventInstance":"6D71E8C4-C880-A359-E053-6701100AB504.2021-06-17T17:28:18.562","hdDetectionTime":"2021-06-17T17:28:17.682","hdSource":"E8AC92BC-9C07-EB74-E053-0100007F6A02","hdAnnotation":"Annotation Measure","hdOffsetTime":"1","hdIdentity":"2cedefff-d4e7-45b9-a4a1-252a20bfa46c","hdMaterialized":false,"hdToSibling":null,"hdCertainty":1,"hdGranularity":"m","hdToParent":null,"hdTTL":"0","hdToChild":null,"hdScenario":"1","hdInternalEventIdentifier":"E8AC92BC-9C07-EB74-E053-0100007F6A02","hdOccurrenceTime":"2021-06-17T17:28:18.562","hdFacts":null},"payLoadType":{"alarm":null,"label":null,"time":null,"measurement":{"msFactor":8,"msOICExt":{"des01":"TID","des02":"test","des03":"test","val03":"1","val01":"","val02":"1","spare":null},"msSampling":null,"msRelative":false,"msValue":27,"msOIC":{"documentCode":"DocumentCode","oicString":"TSAO_STCN_AIDWHARM1EIIA_001_AIDWHAPPSEIIA_001_MDWAMBIENT","annotation":"Annotation","oic":{"spn":"AIDWHAPPSEIIA","area":"TSAO","oicIdentity":"6D71E8C4-C880-A359-E053-6701100AB504","serial":null,"mpnp":"001","mpn":"AIDWHARM1EIIA","spnp":"001","location":"STCN","signal":"MDWAMBIENT","spare":null},"version":"1"},"msCode":null,"msQuality":"8","msOII":null,"msUM":"null"},"command":null,"status":null}},{"header":{"hdClassType":3,"hdTypeIdentifier":{"type":"M"},"hdEventInstance":"6D71E8C4-D580-A359-E053-6701100AB504.2021-06-17T17:28:25.472","hdDetectionTime":"2021-06-17T17:28:24.689","hdSource":"E8AC92BC-9C07-EB74-E053-0100007F6A02","hdAnnotation":"Annotation Measure","hdOffsetTime":"1","hdIdentity":"e2b662ca-e5fc-4da5-874f-79e3ecb51be0","hdMaterialized":false,"hdToSibling":null,"hdCertainty":1,"hdGranularity":"m","hdToParent":null,"hdTTL":"0","hdToChild":null,"hdScenario":"1","hdInternalEventIdentifier":"E8AC92BC-9C07-EB74-E053-0100007F6A02","hdOccurrenceTime":"2021-06-17T17:28:25.472","hdFacts":null},"payLoadType":{"alarm":null,"label":null,"time":null,"measurement":{"msFactor":17,"msOICExt":{"des01":"TID","des02":"test","des03":"test","val03":"1","val01":"","val02":"1","spare":null},"msSampling":null,"msRelative":false,"msValue":45.5,"msOIC":{"documentCode":"DocumentCode","oicString":"TSAO_STCN_AIDWHARM1EIIA_001_AIDWHETHSEIIA_001_MDWTEMP","annotation":"Annotation","oic":{"spn":"AIDWHETHSEIIA","area":"TSAO","oicIdentity":"6D71E8C4-D580-A359-E053-6701100AB504","serial":null,"mpnp":"001","mpn":"AIDWHARM1EIIA","spnp":"001","location":"STCN","signal":"MDWTEMP","spare":null},"version":"1"},"msCode":null,"msQuality":"83","msOII":null,"msUM":"null"},"command":null,"status":null}}]}'

SELECT * FROM JSON_TABLE(:jsonstr,
                       '$' COLUMNS(NESTED PATH '$.jevents[*]'
                                    COLUMNS(  
                                            jsonobjstr  VARCHAR2 format json path '$'                                            
                                            )
                                  )
          );

预期是这样的:

【问题讨论】:

  • 这似乎也适用于 12.1 - 当作为脚本运行时。您的预期输出(来自 12.2?)在查询结果窗口中,这意味着它作为语句运行。当我这样做时,SQL Developer 会提示输入绑定值,并且如果粘贴了该长字符串,它会得到与您报告的相同的错误 - 显示在查询结果窗口中而不是脚本输出中,因此没有“错误报告:”行。所以我有点困惑......你实际上是如何运行它的,以及在哪个版本的 SQL Developer 中?您的 12.2 实例是否启用了 32k varchar 值?
  • @AlexPoole 我的预期输出从 12.2 开始作为语句运行,当我在 12.1 上运行相同的内容时出现错误。 12.1 和 12.2 上的 max_string_size 都是标准非扩展的。

标签: json oracle oracle12.1


【解决方案1】:

这是我的解决方法:

set serverout on
declare
    l_data           clob;
    l_objdata        dbms_sql.varchar2_table;
    begin
    l_data := '{"jevents":[{"header":{"hdClassType":3,"hdTypeIdentifier":{"type":"A"},"hdEventInstance":"6D71E8C4-F37F-A359-E053-6701100AB504.2021-06-17T17:28:39.710","hdDetectionTime":"2021-06-17T17:28:39.710","hdSource":"E8AC92BC-9C07-EB74-E053-0100007F6A02","hdAnnotation":"Annotation Alarm","hdOffsetTime":"1","hdIdentity":"1cbe6731-36d6-4587-8ad9-482e50f4cfc9","hdMaterialized":false,"hdToSibling":null,"hdCertainty":1,"hdGranularity":"m","hdToParent":null,"hdTTL":"0","hdToChild":null,"hdScenario":"1","hdInternalEventIdentifier":"E8AC92BC-9C07-EB74-E053-0100007F6A02","hdOccurrenceTime":"2021-06-17T17:28:39.710","hdFacts":null},"payLoadType":{"alarm":{"almNormalTime":null,"almOII":"","almDescription":null,"almCode":"ADWFAILURE","almOIC":{"documentCode":"DocumentCode","oicString":"TSAO_STCN_AIDWHARM1EIIA_001_AIDWHETHSEIIA_002_ADWFAILURE","annotation":"Annotation","oic":{"spn":"AIDWHETHSEIIA","area":"TSAO","oicIdentity":"6D71E8C4-F37F-A359-E053-6701100AB504","serial":null,"mpnp":"001","mpn":"AIDWHARM1EIIA","spnp":"002","location":"STCN","signal":"ADWFAILURE","spare":null},"version":"1"},"almOperator":"DWH","almAutomatic":"1","almPriority":"4","almState":"3","almRole":"DWH","almAckTime":"2021-06-17T17:28:39.710","almConsole":"","almOICExt":{"des01":"TID","des02":null,"des03":null,"val03":null,"val01":"","val02":null,"spare":null},"almInitTime":"2021-06-17T17:28:39.710"},"label":null,"time":null,"measurement":null,"command":null,"status":null}},{"header":{"hdClassType":3,"hdTypeIdentifier":{"type":"M"},"hdEventInstance":"6D71E8C4-C880-A359-E053-6701100AB504.2021-06-17T17:28:18.562","hdDetectionTime":"2021-06-17T17:28:17.682","hdSource":"E8AC92BC-9C07-EB74-E053-0100007F6A02","hdAnnotation":"Annotation Measure","hdOffsetTime":"1","hdIdentity":"2cedefff-d4e7-45b9-a4a1-252a20bfa46c","hdMaterialized":false,"hdToSibling":null,"hdCertainty":1,"hdGranularity":"m","hdToParent":null,"hdTTL":"0","hdToChild":null,"hdScenario":"1","hdInternalEventIdentifier":"E8AC92BC-9C07-EB74-E053-0100007F6A02","hdOccurrenceTime":"2021-06-17T17:28:18.562","hdFacts":null},"payLoadType":{"alarm":null,"label":null,"time":null,"measurement":{"msFactor":8,"msOICExt":{"des01":"TID","des02":"test","des03":"test","val03":"1","val01":"","val02":"1","spare":null},"msSampling":null,"msRelative":false,"msValue":27,"msOIC":{"documentCode":"DocumentCode","oicString":"TSAO_STCN_AIDWHARM1EIIA_001_AIDWHAPPSEIIA_001_MDWAMBIENT","annotation":"Annotation","oic":{"spn":"AIDWHAPPSEIIA","area":"TSAO","oicIdentity":"6D71E8C4-C880-A359-E053-6701100AB504","serial":null,"mpnp":"001","mpn":"AIDWHARM1EIIA","spnp":"001","location":"STCN","signal":"MDWAMBIENT","spare":null},"version":"1"},"msCode":null,"msQuality":"8","msOII":null,"msUM":"null"},"command":null,"status":null}},{"header":{"hdClassType":3,"hdTypeIdentifier":{"type":"M"},"hdEventInstance":"6D71E8C4-D580-A359-E053-6701100AB504.2021-06-17T17:28:25.472","hdDetectionTime":"2021-06-17T17:28:24.689","hdSource":"E8AC92BC-9C07-EB74-E053-0100007F6A02","hdAnnotation":"Annotation Measure","hdOffsetTime":"1","hdIdentity":"e2b662ca-e5fc-4da5-874f-79e3ecb51be0","hdMaterialized":false,"hdToSibling":null,"hdCertainty":1,"hdGranularity":"m","hdToParent":null,"hdTTL":"0","hdToChild":null,"hdScenario":"1","hdInternalEventIdentifier":"E8AC92BC-9C07-EB74-E053-0100007F6A02","hdOccurrenceTime":"2021-06-17T17:28:25.472","hdFacts":null},"payLoadType":{"alarm":null,"label":null,"time":null,"measurement":{"msFactor":17,"msOICExt":{"des01":"TID","des02":"test","des03":"test","val03":"1","val01":"","val02":"1","spare":null},"msSampling":null,"msRelative":false,"msValue":45.5,"msOIC":{"documentCode":"DocumentCode","oicString":"TSAO_STCN_AIDWHARM1EIIA_001_AIDWHETHSEIIA_001_MDWTEMP","annotation":"Annotation","oic":{"spn":"AIDWHETHSEIIA","area":"TSAO","oicIdentity":"6D71E8C4-D580-A359-E053-6701100AB504","serial":null,"mpnp":"001","mpn":"AIDWHARM1EIIA","spnp":"001","location":"STCN","signal":"MDWTEMP","spare":null},"version":"1"},"msCode":null,"msQuality":"83","msOII":null,"msUM":"null"},"command":null,"status":null}}]}';      
    SELECT jsonobjstr BULK COLLECT INTO l_objdata FROM JSON_TABLE(l_data,
                       '$' COLUMNS(NESTED PATH '$.jevents[*]'
                                    COLUMNS(  
                                            jsonobjstr  varchar2 format json path '$'                                            
                                            )
                                  )
          );
     -- show
    FOR i IN 1..l_objdata.COUNT LOOP
        DBMS_OUTPUT.PUT_LINE(l_objdata(i));
    END LOOP;
   end;

【讨论】:

    猜你喜欢
    • 2020-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-01
    相关资源
    最近更新 更多