CREATE TABLE t (
contents CLOB
)
INSERT INTO t (contents) VALUES ('[{"foo": "a"}, {"foo": "a", "bar": "b"}]');
私は、次のようなクエリを持っている:Oracle 12C Json - 他のすべてのERROR ON ERROR条件を強制しながら、欠損属性をNULLに設定する方法は?
SELECT foo,
bar
FROM t,
json_table(contents, '$[*]' COLUMNS (
foo VARCHAR2(4000) PATH '$.foo' ERROR ON ERROR,
bar VARCHAR2(4000) PATH '$.bar' ERROR ON ERROR,
)
私が何をしたいのかは、まだ他のすべてのエラーの例を施行しながら、配列は、NULL
に属性を欠落しているため、デフォルト値を設定することが可能です。特に、foo
またはbar
の値が4000より大きい場合は、クエリを失敗させてください。
しかし、は、JSONオブジェクトにfoo
またはbar
が見つからない場合にクエリを失敗させます。これのエラーコードはORA-40462: JSON_VALUE evaluated to no value
です。
私はNULL ON ERROR
を設定することができましたが、クエリが失敗するのではなく、4000を超えるすべての属性がNULLに設定されます。
他のすべてのERROR ON ERROR
条件を引き続き実行しながら、Oracleに不足している属性をNULLに設定する方法はありますか?
私はまさにこの目的、例えばオラクル12CR1
は、あなたのステーションがファンクションまたはプロシージャのようなPL/SQLを使用するために利用できるのですか? –