PL/SQLでBLOBデータを表示する方法

PL/SQLでは、BLOBデータを確認するために次を使用できます:

  1. DBMS_OUTPUT.PUT_LINE ファンクションを使用して、BLOB データをコンソールに出力する。
DECLARE
  l_blob BLOB;
  l_buffer RAW(32767);
  l_amount BINARY_INTEGER := 32767;
  l_pos INTEGER := 1;
BEGIN
  -- 假设有一个表my_table,其中包含一个BLOB列my_blob
  SELECT my_blob INTO l_blob FROM my_table WHERE ...

  -- 从BLOB中读取数据,并输出到控制台
  LOOP
    DBMS_LOB.READ(l_blob, l_amount, l_pos, l_buffer);
    DBMS_OUTPUT.PUT_LINE(UTL_RAW.CAST_TO_VARCHAR2(l_buffer));
    l_pos := l_pos + l_amount;
  END LOOP;
END;
/
  1. ファイルへBLOBデータを書き込む:
DECLARE
  l_blob BLOB;
  l_file UTL_FILE.FILE_TYPE;
  l_buffer RAW(32767);
  l_amount BINARY_INTEGER := 32767;
  l_pos INTEGER := 1;
BEGIN
  -- 假设有一个表my_table,其中包含一个BLOB列my_blob
  SELECT my_blob INTO l_blob FROM my_table WHERE ...

  -- 打开文件
  l_file := UTL_FILE.FOPEN('DIRECTORY', 'file_name', 'W');

  -- 从BLOB中读取数据,并写入文件
  LOOP
    DBMS_LOB.READ(l_blob, l_amount, l_pos, l_buffer);
    UTL_FILE.PUT_RAW(l_file, l_buffer, TRUE);
    l_pos := l_pos + l_amount;
  END LOOP;

  -- 关闭文件
  UTL_FILE.FCLOSE(l_file);
END;
/

my_table と my_blob を実際のテーブル名と BLOB 列名に、また DIRECTORY は実際のディレクトリ オブジェクトに、file_name はファイル名に置き換えてください。

bannerAds