Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Вставка в записи с типом данных BFILE / 17 сообщений из 17, страница 1 из 1
15.07.2015, 13:04
    #39007782
daaapd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка в записи с типом данных BFILE
Здравствуйте форумчане
Возникла необходимость вставки записи с полем типа BFILE. Создали директорию Оракла, в апексе (4.2) теперь необходимо в таблицу и в саму директорию вставлять файлы, как это сделать подскажите.
...
Рейтинг: 0 / 0
15.07.2015, 13:23
    #39007798
blkangel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка в записи с типом данных BFILE
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
15.07.2015, 13:51
    #39007838
daaapd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка в записи с типом данных BFILE
blkangel,Т.е сначала в какую-то темповую таблицу что ли инсертить с blob?
а может тогда как-то через апексовую таблицу wwv_flow_files попробовать
...
Рейтинг: 0 / 0
15.07.2015, 14:00
    #39007853
blkangel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка в записи с типом данных BFILE
daaapdblkangel,Т.е сначала в какую-то темповую таблицу что ли инсертить с blob?
а может тогда как-то через апексовую таблицу wwv_flow_files попробовать

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

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

так он несколько записей возвращает
...
Рейтинг: 0 / 0
16.07.2015, 09:36
    #39008531
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка в записи с типом данных BFILE
...
Рейтинг: 0 / 0
16.07.2015, 12:53
    #39008764
daaapd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка в записи с типом данных BFILE
Petro123,
Почему то Item FILE_BROWSE возвращает не только имя файла, но и путь до него, есть стандартный какой-нибудь способ только имя файла получить для получения файла из wwv_flow_files
...
Рейтинг: 0 / 0
16.07.2015, 13:10
    #39008793
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка в записи с типом данных BFILE
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
16.07.2015, 13:28
    #39008821
blkangel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка в записи с типом данных BFILE
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
16.07.2015, 13:39
    #39008838
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка в записи с типом данных BFILE
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
16.07.2015, 16:25
    #39009091
blkangel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка в записи с типом данных BFILE
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
16.07.2015, 16:30
    #39009097
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка в записи с типом данных BFILE
blkangel,
хотя проект унаследован, но в принципе удобно.
- в своей схеме данные, бэкап одной командой
@expdp фффф/ыыы@вввв SCHEMAS=SSSSSSSS DUMPFILE=20150611.expdp LOGFILE=_dump.log
- навесил доп. поле с доп.инфой (FK)
и т.д.
...
Вот у тебя тоже, BFILE....нафиг он сдался?
...
Рейтинг: 0 / 0
16.07.2015, 16:31
    #39009100
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка в записи с типом данных BFILE
Petro123Вот у тебя тоже
не у тебя, а у аффтара
...
Рейтинг: 0 / 0
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Вставка в записи с типом данных BFILE / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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