2017-06-29 13 views
0

BLOB列を持つシンプルな表。スクリプトでdbms_lob.fragment_insertが機能しないのはなぜですか?

create table table01 (
    myCode VARCHAR2(10), 
    myValue blob 
); 

insert into table01(myCode, myValue) values('abc', hextoraw('414243')); 

私はdbms_lob.fragment_insert

declare 
    l_b BLOB; 
begin 
    SELECT myValue 
    INTO l_b 
    FROM table01 
    WHERE myCode = 'abc' 
    FOR UPDATE; 

    dbms_lob.fragment_insert(l_b, 3, 1+dbms_lob.getlength(l_b), hextoraw('787878')); 
end; 
/

を使用してBLOB値を変更しようとしているとOracle DBについての私の知識が何を理解するのに十分ではありません

declare 
ERROR at line 1: 
ORA-43856: Unsupported LOB type for SECUREFILE LOB operation 
ORA-06512: at "SYS.DBMS_LOB", line 1159 
ORA-06512: at line 10 
43856. 0000 - "Unsupported LOB type for SECUREFILE LOB operation" 
Document: YES 
Cause: A LOB that is not a SECUREFILE was used in a SQL statement or 
      in a call where a SECUREFILE LOB was expected. 
Action: Convert the LOB to a SECUREFILE LOB or do not use this keyword 
      or call. 

以下のように、私は例外を参照してください私は間違っている。 dbms_lob.fragment_insertを私のやり方で使用することは可能ですか?

+0

[ORA-43856:SECUREFILE LOB操作のサポートされていないLOBタイプのトラブルシューティング方法](https://stackoverflow.com/questions/20432573/how-to-troubleshoot-ora-43856-unsupported-lob-type -for-securefile-lob-operation) – XING

+1

リンクされた質問ありがとうございます。それは私とゆるやかに結びついています。私は自分自身の質問に答えました – marekzbrzozowa

答えて

0

私の質問に対する答えは、おそらくそのdbms_lob.fragment_insertがSecureFilesの:(として格納されていないブロブを変更するために使用することはできませんです。

私は道

create table table01 (
    myCode VARCHAR2(10), 
    myValue blob 
) lob(myValue) store as SECUREFILE; 

次に私のテーブルを作成するとき

私は、データベースホストファイルシステムにアクセスせずに大きなBLOBを変更するためのpl/sqlソリューションを探しています.blobはsecurefilesではありません。dbms_lob.fragment_insertは解決策になります。

関連する問題