【问题标题】:In Oracle PL/SQL, How do I check if a JSON object contains an element of a specific key在 Oracle PL/SQL 中,如何检查 JSON 对象是否包含特定键的元素
【发布时间】:2021-12-30 20:05:01
【问题描述】:

我有一个如下所示的程序。它接受 JSON 对象作为输入。此对象类型中的元素之一是带有键 samplekey 的数组。在某些情况下,JSON 对象 p_object 不包含 samplekey 数组。在这些情况下,该过程会遇到运行时异常。在 PL/SQL 中处理这种情况的最佳方法是什么?我是否必须首先检查对象p_object 中是否存在带有键samplekey 的元素?如果是,我该怎么做?有没有更好的方法来处理这种情况?

procedure(p_object in json_object_t)
as

lja json_array_t;

begin

lja   := p_object.get_array('samplekey');

end;

【问题讨论】:

  • 视情况而定。当发现该错误时,您希望该过程执行什么操作?如果您希望它被忽略(并且做一些完全不同的事情,不使用该数组),那么您可以在if 语句中检查是否存在。否则,只需在代码的错误处理部分处理错误即可。

标签: json oracle plsql


【解决方案1】:

您可以使用JSON_OBJECT_THAS 功能。如果 JSON 具有您搜索的密钥,这将返回 TRUEFALSE。下面是一个如何使用它的示例。

DECLARE
    PROCEDURE test_json (p_object IN json_object_t)
    IS
    BEGIN
        IF p_object.has ('samplekey')
        THEN
            DBMS_OUTPUT.put_line ('JSON has the key "samplekey"');
        ELSE
            DBMS_OUTPUT.put_line ('JSON does NOT have the key "samplekey"');
        END IF;
    END;
BEGIN
    test_json (json_object_t ('{}'));
    test_json (json_object_t ('{"samplekey":123}'));
    test_json (json_object_t ('{"otherkey":"test"}'));
END;
/

--Output
JSON does NOT have the key "samplekey"
JSON has the key "samplekey"
JSON does NOT have the key "samplekey"

【讨论】:

    猜你喜欢
    • 2012-10-17
    • 2013-07-31
    • 2019-03-18
    • 2015-03-15
    • 1970-01-01
    • 1970-01-01
    • 2015-12-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多