Oracle数据库执行PL/SQL代码遇ORA-30625错误,求解决方法
ORA-30625错误解决:NULL SELF参数调用成员方法不允许
错误原因
你提供的PL/SQL代码中,解析的JSON字符串{"reference": "hello"}里没有paymentDetails这个键,调用m_top_obj.get_object('paymentDetails')会返回NULL。后续用这个NULL对象调用get_string('reference')方法时,就触发了ORA-30625错误——Oracle禁止对NULL的SELF参数调用成员方法。
解决方案
方案1:确保JSON包含目标键
如果业务逻辑要求paymentDetails必须存在,修改输入的JSON字符串,添加该对象:
declare m_top_obj json_object_t; m_paymentDetails_obj json_object_t; begin -- 修正JSON,加入paymentDetails对象 m_top_obj := json_object_t.parse('{"reference": "hello", "paymentDetails": {"reference": "payment_ref_001"}}'); m_paymentDetails_obj := m_top_obj.get_object('paymentDetails'); DBMS_OUTPUT.PUT_LINE(m_paymentDetails_obj.get_string('reference')); end; /
方案2:添加NULL判断处理异常场景
如果paymentDetails是可选字段,在调用方法前先检查对象是否为NULL:
declare m_top_obj json_object_t; m_paymentDetails_obj json_object_t; begin m_top_obj := json_object_t.parse('{"reference": "hello"}'); m_paymentDetails_obj := m_top_obj.get_object('paymentDetails'); -- 先校验对象非空,再执行方法调用 if m_paymentDetails_obj is not null then DBMS_OUTPUT.PUT_LINE(m_paymentDetails_obj.get_string('reference')); else DBMS_OUTPUT.PUT_LINE('paymentDetails字段不存在或为空'); end if; end; /
内容的提问来源于stack exchange,提问作者Damo
相关产品推荐
相关产品推荐

