![](/img/trans.png)
[英]Oracle 12C - JSON_TABLE - How to return other columns in the table when json column is null
[英]Oracle 12C - %TYPE in JSON_TABLE column doesn't work
我正在嘗試將 JSON 數組保存為數據庫行:
INSERT INTO ca_kiosk_browser_log (
"uuid",
"date",
"msg",
"level"
)
WITH t ( log ) AS (
SELECT
JSON_QUERY('[{"uuid": "20000000-0000-0000-0000-000000000000", "date": "2021-10-17", "msg":"aaaa", "level": "debug" },
{"uuid": "20000000-0000-0000-0000-000000000000", "date": "2021-10-17", "msg":"bbbb", "level": "debug" }]'
, '$')
FROM
dual
)
SELECT
"uuid",
"date",
"msg",
"level"
FROM
t
CROSS JOIN
JSON_TABLE ( log, '$'
COLUMNS (
NESTED PATH '$[*]'
COLUMNS (
"uuid" VARCHAR2 ( 36 ) PATH '$.uuid',
"date" DATE PATH '$.date',
"msg" VARCHAR2 ( 1024 ) PATH '$.msg',
"level" VARCHAR2 ( 5 ) PATH '$.level'
)
)
)
當我嘗試使用%type
:
NESTED PATH '$[*]'
COLUMNS (
"uuid" VARCHAR2 ( 36 ) PATH '$.uuid',
"date" my_table.date%type PATH '$.date',
"msg" VARCHAR2 ( 1024 ) PATH '$.msg',
"level" VARCHAR2 ( 5 ) PATH '$.level'
)
我收到一個錯誤:
SQL Error: ORA-40484: invalid data type for JSON_TABLE column
40484. 00000 - "invalid data type for JSON_TABLE column"
*Cause: A column in the provided JSON_TABLE had an unsupported data type.
*Action: Provide a supported data type.
即使列中的類型也是date
。
類型char(36)
也不起作用,所以我必須使用VARCHAR2(36)
。
在這種情況下可以使用%type
嗎?
JSON_TABLE
文檔提供了 JSON 查詢列子句的語法:
按照JSON_value_return_type
文檔的鏈接告訴您允許的數據類型:
鑒於此,不,您不能使用%TYPE
或CHAR
因為JSON_TABLE
語法不允許它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.