如何在 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 数据,但没有用约束声明。
我正在尝试使用旧视图中的 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 数据,但没有用约束声明。