powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Вставка в записи с типом данных BFILE
17 сообщений из 17, страница 1 из 1
Вставка в записи с типом данных BFILE
    #39007782
daaapd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте форумчане
Возникла необходимость вставки записи с полем типа BFILE. Создали директорию Оракла, в апексе (4.2) теперь необходимо в таблицу и в саму директорию вставлять файлы, как это сделать подскажите.
...
Рейтинг: 0 / 0
Вставка в записи с типом данных BFILE
    #39007798
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
daaapdЗдравствуйте форумчане
Возникла необходимость вставки записи с полем типа BFILE. Создали директорию Оракла, в апексе (4.2) теперь необходимо в таблицу и в саму директорию вставлять файлы, как это сделать подскажите.

Ну если тебе нужно именно в bfile то можно сначала в блоб записать, а потом заинсертишь в bfile куда тебе нужно.
Ну а поводу как записать в директорию, это вопрос не по апексу конечно, но как то так.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
declare 
	v_blob			blob;
	v_filename		varchar2(1024);
	v_location		varchar2(4000);
	v_buffer			raw(32767);
	v_buffer_size	binary_integer;
	v_amount			binary_integer;
	v_offset			number(38) := 1;
	v_chunksize		integer;
	v_out_file		utl_file.file_type;

Begin
	select directory_name into v_location from all_directories where directory_name = 'DIRNAME';
	select data_value, filename into v_blob, v_filename from TABLE_FILES where emr_file_id=256;
	v_chunksize:=dbms_lob.getchunksize(v_blob);
	dbms_output.put_line('to_char(v_chunksize)-'||to_char(v_chunksize));

	if (v_chunksize < 32767) then
		v_buffer_size := v_chunksize;
	else
		v_buffer_size := 32767;
	end if;

	v_amount := v_buffer_size;
	dbms_lob.open(v_blob, dbms_lob.lob_readonly);
	
	v_out_file := utl_file.fopen(
		location      => v_location, 
		filename      => v_filename, 
		open_mode     => 'wb',
		max_linesize  => 32767
	);

	while v_amount >= v_buffer_size
	loop
		dbms_lob.read(
			lob_loc    => v_blob,
			amount     => v_amount,
			offset     => v_offset,
			buffer     => v_buffer
		);
		v_offset := v_offset + v_amount;
		utl_file.put_raw (
			file      => v_out_file,
			buffer    => v_buffer,
			autoflush => true
		);
		utl_file.fflush(file => v_out_file);
	-- utl_file.new_line(file => v_out_file);
	end loop;
	utl_file.fflush(file => v_out_file);
	utl_file.fclose(v_out_file);
	dbms_lob.close(v_blob);
end;
/
...
Рейтинг: 0 / 0
Вставка в записи с типом данных BFILE
    #39007838
daaapd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blkangel,Т.е сначала в какую-то темповую таблицу что ли инсертить с blob?
а может тогда как-то через апексовую таблицу wwv_flow_files попробовать
...
Рейтинг: 0 / 0
Вставка в записи с типом данных BFILE
    #39007853
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
daaapdblkangel,Т.е сначала в какую-то темповую таблицу что ли инсертить с blob?
а может тогда как-то через апексовую таблицу wwv_flow_files попробовать

Как бы я ее и предполагал. ну а дальше крути как хочешь.
...
Рейтинг: 0 / 0
Вставка в записи с типом данных BFILE
    #39007867
daaapd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blkangel,
я что-то в коде не найду где же пишется то в в поле bfile то сама ссылка на сохранившийся в директории файл
...
Рейтинг: 0 / 0
Вставка в записи с типом данных BFILE
    #39007874
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
daaapdblkangel,
я что-то в коде не найду где же пишется то в в поле bfile то сама ссылка на сохранившийся в директории файл

Не понял вопроса:)
Тут приведен пример кода, который из блоба записывает на диск в оракл директорию файл.
BFILE тут не причем
...
Рейтинг: 0 / 0
Вставка в записи с типом данных BFILE
    #39007945
daaapd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blkangel,
А ITEM filebrowser сам сохраняет после submit в таблице wwv_flow_files только в текущей сессии?
...
Рейтинг: 0 / 0
Вставка в записи с типом данных BFILE
    #39007991
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
daaapdblkangel,
А ITEM filebrowser сам сохраняет после submit в таблице wwv_flow_files только в текущей сессии?
Немного не так, он сохраняет в своей системной таблице, строчки которой доступны без танцев доступна по синониму wwv_flow_files только для текущей сессии.
...
Рейтинг: 0 / 0
Вставка в записи с типом данных BFILE
    #39008506
daaapd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторblkangel,Как найти нужный файл, какой условие поставить в запросе
Код: plsql
1.
select w.blob_content,w.filename into v_blob,v_filename from wwv_flow_files w

так он несколько записей возвращает
...
Рейтинг: 0 / 0
Вставка в записи с типом данных BFILE
    #39008531
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Вставка в записи с типом данных BFILE
    #39008764
daaapd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,
Почему то Item FILE_BROWSE возвращает не только имя файла, но и путь до него, есть стандартный какой-нибудь способ только имя файла получить для получения файла из wwv_flow_files
...
Рейтинг: 0 / 0
Вставка в записи с типом данных BFILE
    #39008793
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
daaapdPetro123,
Почему то Item FILE_BROWSE возвращает не только имя файла, но и путь до него, есть стандартный какой-нибудь способ только имя файла получить для получения файла из wwv_flow_files
обрежь по символу слэш.
Типа:
INSTR(string1, string2, [start [, n]])

The function takes a string, string1, and find the first occurence of string2 in that string, returning an integer of the position in string1. The function will optionally begin the search at a given start position and can even return the nth set of string2 in string1. If you omit the start position, the function searches from the beginning of string1. If you provide a negative number for the start position, the function searches backwards from the end of string1.

Here are some examples:

INSTR('San Francisco','an') returns 2

INSTR('San Francisco','an', 1, 2) returns[b] 7 as this is the second occurrence of 'an'

INSTR('San Francisco','an', -1, 2) returns[b] 2 as this is the second occurrence of 'an' when starting from the end
...
Рейтинг: 0 / 0
Вставка в записи с типом данных BFILE
    #39008821
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,
Разве не так?
Код: plsql
1.
select w.blob_content,w.filename into v_blob,v_filename from wwv_flow_files w where w.name=:PXXX_FILENAME;
...
Рейтинг: 0 / 0
Вставка в записи с типом данных BFILE
    #39008838
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blkangelPetro123,
Разве не так?
Код: plsql
1.
select w.blob_content,w.filename into v_blob,v_filename from wwv_flow_files w where w.name=:PXXX_FILENAME;


да. Можно так.
У меня переброска в свою таблицу
Код: sql
1.
2.
3.
4.
    Insert into MY_FILES (id, F_DATA, F_MIMETYPE, F_CHARSET, F_FILENAME)
      select l_id_blob, BLOB_CONTENT, MIME_TYPE, DAD_CHARSET, FILENAME
        from WWV_FLOW_FILES
        where NAME=pNAME;


потом сразу в лог pNAME.
Наверно не стал мучить сервер доп.запросом LOL ))
...
Рейтинг: 0 / 0
Вставка в записи с типом данных BFILE
    #39009091
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123blkangelPetro123,
Разве не так?
Код: plsql
1.
select w.blob_content,w.filename into v_blob,v_filename from wwv_flow_files w where w.name=:PXXX_FILENAME;


да. Можно так.
У меня переброска в свою таблицу
Код: sql
1.
2.
3.
4.
    Insert into MY_FILES (id, F_DATA, F_MIMETYPE, F_CHARSET, F_FILENAME)
      select l_id_blob, BLOB_CONTENT, MIME_TYPE, DAD_CHARSET, FILENAME
        from WWV_FLOW_FILES
        where NAME=pNAME;


потом сразу в лог pNAME.
Наверно не стал мучить сервер доп.запросом LOL ))

А в чем прикол wwv_flow_files использовать, а потом в табличку писать? (Если конечно не нужно формат данных BFILE). Почему сразу не писать в табличку?
Я понимаю когда надо блоб обработать как то, но в твоем примере я этого не вижу...
...
Рейтинг: 0 / 0
Вставка в записи с типом данных BFILE
    #39009097
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blkangel,
хотя проект унаследован, но в принципе удобно.
- в своей схеме данные, бэкап одной командой
@expdp фффф/ыыы@вввв SCHEMAS=SSSSSSSS DUMPFILE=20150611.expdp LOGFILE=_dump.log
- навесил доп. поле с доп.инфой (FK)
и т.д.
...
Вот у тебя тоже, BFILE....нафиг он сдался?
...
Рейтинг: 0 / 0
Вставка в записи с типом данных BFILE
    #39009100
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Вот у тебя тоже
не у тебя, а у аффтара
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Вставка в записи с типом данных BFILE
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]