簡體   English   中英

Oracle 12C - JSON_TABLE 列中的 %TYPE 不起作用

[英]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_TABLE 列子句的語法圖

按照JSON_value_return_type文檔的鏈接告訴您允許的數據類型:

JSON 數據類型的語法圖

鑒於此,不,您不能使用%TYPECHAR因為JSON_TABLE語法不允許它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM