Top > SQL 関数一覧 (E‐N) > EMPTY_BLOB、EMPTY_CLOB

空のロケータを生成、LOB を初期化する

syntax

BFILE ( 'directory ' , 'filename' )
EMPTY_BLOB
EMPTY_CLOB
return [ LOB locator ]

parameter

directoryディレクトリオブジェクト
filenameファイル名

return

  • 空のロケータを戻す。

avail

  • SQL および PL/SQL の両方で使用可能。

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 関連

 
アルファベット別 関数一覧 ショートカット
ABCDEFG
HILMNOP
RSTUVWX
日本オラクル
■ 日本オラクル 株式会社
■ オラクルマスター資格 (オラクルマスターとは
■ 会員制(無料)の公式技術サイト