【问题标题】:How to create a view with JSON_TABLE and BLOB data in Oracle 12c如何在 Oracle 12c 中使用 JSON_TABLE 和 BLOB 数据创建视图
【发布时间】:2016-09-14 17:18:31
【问题描述】:

我正在尝试使用旧视图中的 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 - “没有为二进制数据类型定义格式” *原因:提供的 JSON 输入是二进制类型,但格式是 没有定义的。 *操作:定义二进制输入的格式。

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

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

【问题讨论】:

    标签: json view blob oracle12c


    【解决方案1】:

    Okie dokie 所以,

    将 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;
    

    我正在使用的表列具有 JSON 数据,但没有通过约束声明为 JSON 数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-04
      • 2019-03-17
      • 2017-09-22
      • 1970-01-01
      • 2015-06-08
      • 1970-01-01
      • 2022-01-15
      • 2012-12-01
      相关资源
      最近更新 更多