質問編集履歴
2
誤字修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,4 +1,6 @@
|
|
1
|
+
```ここに言語を入力
|
2
|
+
コード
|
1
|
-
### 実現したいこと
|
3
|
+
```### 実現したいこと
|
2
4
|
OracleDB上に格納していBLOBデータのファイル出力のパフォーマンスを上げたいです。
|
3
5
|
### 前提
|
4
6
|
BLOBデータをファイルで出力すること自体は下記のPL/SQLで実現済みになります。
|
@@ -11,9 +13,8 @@
|
|
11
13
|
|
12
14
|
### 発生している問題・エラーメッセージ
|
13
15
|
出力自体は出来るが、ループを重ねるごとに書き込み速度が遅くなっていき、最終的に1秒数キロバイトぐらいの速度でファイルの書き込みになる
|
14
|
-
|
15
16
|
### 該当のソースコード
|
16
|
-
言語:PL/SQL
|
17
|
+
```言語:PL/SQL
|
17
18
|
DECLARE
|
18
19
|
v_blob BLOB;
|
19
20
|
v_offset INTEGER := 1;
|
@@ -71,7 +72,6 @@
|
|
71
72
|
RAISE;
|
72
73
|
END;
|
73
74
|
/
|
74
|
-
```
|
75
75
|
### 試したこと
|
76
76
|
|
77
77
|
UTL_FILE.FCLOSE(v_filetype);の直後にv_blob の中身を初期化(v_blob :=null)
|
1
ソースコード不足ヶ所追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -41,7 +41,8 @@
|
|
41
41
|
v_openmode,
|
42
42
|
v_file_buffer_size
|
43
43
|
);
|
44
|
-
v_filename := 'C_CONTROLのselect結果を元に決定'
|
44
|
+
v_filename := 'C_CONTROLのselect結果を元に決定';
|
45
|
+
v_blob := 'C_CONTROLのselectで抽出したデータを代入';
|
45
46
|
while v_offset < v_totalsize loop
|
46
47
|
if v_offset + v_amount > v_totalsize then
|
47
48
|
v_amount := v_totalsize - v_offset + 1;
|