1
私はこのスクリプトをplsqlに持っています。データベースに100レコードあり、コードすべてのレコードを抽出していますが、それらは空白のファイルです。何が問題なのでしょうか。複数のレコードを抽出するときにplsqlスクリプトから空のjpgファイルが生成される理由
以下はコードブロックです。ご了承ください。
--create or replace directory my_dir as '/export/home/Desktop/Pic';
DECLARE
v_dir varchar2(10):='MY_DIR';
t_blob BLOB;
t_len NUMBER;
t_file_name VARCHAR2(100);
t_output UTL_FILE.file_type;
t_TotalSize number;
t_position number := 1;
t_chucklen NUMBER := 4096;
t_chuck raw(4096);
t_remain number;
BEGIN
FOR i IN 1..100 LOOP
SELECT DBMS_LOB.getlength (IMAGE), brid ||'P.jpg'
INTO t_TotalSize, t_file_name FROM Photo WHERE IMAGEID=i;
IF (t_file_name IS NOT NULL) THEN
dbms_output.put_line('Got: ' || t_file_name);
t_remain := t_TotalSize;
t_output := UTL_FILE.fopen (v_dir, t_file_name, 'WB', 32760);
SELECT IMAGE INTO t_blob FROM Photo WHERE IMAGEID=i;
WHILE t_position < t_TotalSize LOOP
DBMS_LOB.READ (t_blob, t_chucklen, t_position, t_chuck);
UTL_FILE.put_raw (t_output, t_chuck);
UTL_FILE.fflush (t_output);
t_position := t_position + t_chucklen;
t_remain := t_remain - t_chucklen;
IF t_remain < 4096
THEN
t_chucklen := t_remain;
END IF;
END LOOP;
END IF;
END LOOP;
UTL_FILE.fclose (t_output);
END;
こんにちは、私はそれに写真を挿入し、コードと呼ばれる、BLOB列を持つ表を作成し、それは**、**ワークスので、多分あなたはどこかに問題がある(かもしれテーブル自体または挿入プロセスかもしれません) – hmmftg
返信ありがとうございます。しかし、上記のコードを1つのレコードだけ呼び出すと、正常に動作しますが、テーブルに複数のレコードが含まれていて、それらのすべてを抽出する必要があります。 – Muzurl
set ** t_position:= 0 **ループ内 – hmmftg