2016-09-13 7 views
0

古いビューのBLOB列(JSONを含む)を使用して、古いビューからビューを作成しようとしています。 は、私はそうのような文があります。Oracle 12cでJSON_TABLEおよびBLOBデータを使用してビューを作成する方法

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

新しいビューが何が移入されていません。もしブロブをクロップに変換すると、ビューには行が挿入されます。私はこれに、上記のステートメントを変更する場合はさらに:

SQLエラー:ORA-40499: - 「定義されていない形式のバイナリデータ型 40499. 00000用に定義されていないフォーマット

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; 

私は次のエラーを取得しますバイナリ・データ型の場合 " *原因:指定されたJSON入力がバイナリ・タイプですが、フォーマットが ではありません。 *処置:バイナリ入力の書式を定義してください。

誰もがこれを解決する方法を知っていますか?

BLOB列を使用するときに "format json"を定義することが必須であることはわかっていますが、それ以降はわかりません。私はorcale docsで定義されている形式に正しく従っていると思います。

答えて

0

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データを持っていましたが、制約を持つように宣言されていません。

関連する問題