空のロケータを生成、LOB を初期化する
BFILE ( 'directory ' , 'filename' )
EMPTY_BLOB
EMPTY_CLOB
return [ LOB locator ]
directory | ディレクトリオブジェクト |
filename | ファイル名 |
EMPTY_BLOB、EMPTY_CLOB 関数の内容
空の LOB ロケータを戻す。この関数で取得したロケータを直接 DBMS_LOB で使用することは許されない。
使用すると ORA-22275: 指定されたLOBロケータが無効です が発生する。
EMPTY_CLOB 使用例
SQL> set null '<NULL>'
SQL> select * from clob_sample;
CL
-----------------------------------------------------
NOT EMPTY CLOB
NOT EMPTY CLOB
NOT EMPTY CLOB
SQL> insert into clob_sample values ( EMPTY_CLOB() );
1行が作成されました。
SQL> update clob_sample set cl = EMPTY_CLOB();
4行が更新されました。
SQL> select * from clob_sample;
CL
-----------------------------------------------------
<NULL>
<NULL>
<NULL>
<NULL>
⇒ SQL*Plus の NULL 表示
DBMS_LOB で使用するとエラーになる
PL/SQL から 空ではない 一時 CLOB に COPY
SQL> declare
2 vsrc clob;
3 vdest clob;
4 begin
5 vsrc := to_clob('あいう');
6 vdest := to_clob('x');
7 dbms_lob.copy(vdest, vsrc, 100);
8 end;
9 /
PL/SQLプロシージャが正常に完了しました。
EMPTY_CLOB で初期化されている CLOB に COPY
SQL> declare
2 vsrc clob;
3 vdest clob;
4 begin
5 vsrc := to_clob('あいう');
6 vdest := EMPTY_CLOB();
7 dbms_lob.copy(vdest, vsrc, 100);
8 end;
9 /
declare
*
行1でエラーが発生しました。:
ORA-22275: 指定されたLOBロケータが無効です
ORA-06512: "SYS.DBMS_LOB", 行429
ORA-06512: 行7
EMPTY_CLOB() の代わりに DBMS_LOB.CREATETEMPORARY(vdest, false); を使用すればよい
SQL 関数 - EMPTY_BLOB,EMPTY_CLOB 関連