【问题标题】:oracle trigger and json_valueoracle 触发器和 json_value
【发布时间】:2019-09-27 12:01:12
【问题描述】:

您好,我想通过触发器存储 :new.payload 中的一些值。

这在 sql-developer 中有效,但在触发器中无效...

select json_value('{"timestamp":"2019-05-09T14:00:00Z","value":0,"unit":"W/m²"}', '$.unit') from dual;

'{"timestamp":"2019-05-09T14:00:00Z","value":0,"unit":"W/m²"}' 是我的 :new.payload

我也试过了:

SELECT unit INTO v_unit
    FROM
        json_table(:new.payload, '$'
            columns (
                    timestamp VARCHAR2(80) path '$.timestamp',
                    value NUMBER path '$.value',
                    unit VARCHAR2(80) path '$.unit'
                    )
) jt;

我收到错误 ORA-00904: "DECL_OBJ#" ;/

(错误:ORA-00604:递归错误 SQL 级别 1 ORA-00904:“DECL_OBJ #”:无效 ID)

【问题讨论】:

  • 请编辑问题并显示整个错误,包括调用堆栈。谢谢

标签: sql json oracle triggers


【解决方案1】:

这是一个疯狂的猜测,但试试这个:

1.打开 SQL Developer 将 PLScope identifiers 参数(Tools > Preferences > Database > PL/SQL Compiler > PLScope identifiers)从 All 设置为 None。

  1. 关闭并打开 SQL Developer

【讨论】:

  • 就这样?真的吗?好吧……为什么现在可以了?
  • 我在 Oracle 支持站点上查找了该错误并找到了有关它的注释。这是一个内部预言机错误。您需要一个 oracle 支持帐户才能获取详细信息。
  • 您可以在这里阅读详细信息 - drive.google.com/file/d/1Vy3GRqUezdhRb-FENY8eurGvx6UIUZUb/…
猜你喜欢
  • 2022-01-12
  • 2011-05-11
  • 2014-05-05
  • 2021-02-12
  • 2013-02-09
  • 2017-07-19
  • 2016-09-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多