如何在 Oracle 12c 中使用 JSON_TABLE 和 BLOB 数据创建视图

How to create a view with JSON_TABLE and BLOB data in Oracle 12c

我正在尝试使用旧视图中的 BLOB 列(包含 JSON)从旧视图创建视图。 我有这样的声明:

CREATE OR REPLACE VIEW new_view AS 
(
SELECT ov.a, ov.b, ov.c, data.* FROM old_view ov, 
    JSON_TABLE
    (
        ov.my_column,
        '$'
        columns
        something VARCHAR2(50 CHAR) format json path '$.a.b.c'
    ) 
as data);

新视图未填充任何内容。如果我将 blob 转换为 clob,视图将插入行。此外,如果我将上述语句更改为:

SELECT ov.a, ov.b, ov.c, data.* FROM old_view ov, 
    JSON_TABLE
    (
        ov.my_column,
        '$'
        columns
        something VARCHAR2(50 CHAR) format json path '$.x.y.z'
    ) 
as data;

我收到以下错误:

SQL 错误:ORA-40499: 没有为二进制数据类型定义格式 40499.00000 - "no format defined for binary data type" *原因:提供的 JSON 输入是二进制类型,但格式是 没有定义的。 *Action: 定义二进制输入的格式。

有人知道如何解决这个问题吗?

我知道在使用 BLOB 列时必须定义 "format json" 但之后我不确定。我想我正确地遵循了 orcale docs 中定义的格式。

好吧好吧,

将 select 语句更新为以下内容:

SELECT ov.a, ov.b, ov.c, data.* FROM old_view ov, 
    JSON_TABLE
    (
        ov.my_column format json,
        '$'
        columns
        something VARCHAR2(50 CHAR) format json path '$.x.y.z'
    ) 
as data;

我正在使用的 table 列有 JSON 数据,但没有用约束声明。