![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
добрый день!
вопрос к хорошо знающим оракл. в двух словах, я передаю файл кусочками по 32к из приложения в хранимую процедуру оракла. файл принимается и сохраняется. принимает и сохраняет его следующая процедура: (в базе есть запись с id 1 и полем ORIG_FILE типа blob = null) Код:
procedure dbst_save_lob(
id in number
,blb in blob
) is
bl blob;
len BINARY_INTEGER;
begin
select ORIG_FILE into bl from test_lob_2 where ID=1 for update;
--prog_debug_info_save(length(bl));
if bl is null then
begin
update test_lob_2 set ORIG_FILE=blb where ID=1;
end;
else
begin
len := length(blb);
dbms_lob.writeappend(bl, len, blb);
update test_lob_2 set ORIG_FILE=blb where ID=1;
end;
end if;
end;в том плане чтоб как то складировать это в какую нибудь переменную и update делать только в самом конце? |
|
#2
|
|||
|
|||
|
все, вроде как работает...
вобщем сделал так Код:
procedure dbst_save_lob(
id in number
,blb in blob
) is
len BINARY_INTEGER;
begin
if loc is null then
begin
update test_lob set ORIG_FILE=EMPTY_BLOB ();
select ORIG_FILE into loc from test_lob where TEST_ID=1 for update;
--prog_debug_info_save('старт');
end;
end if;
if loc is not null then
begin
len := length(blb);
if len<>32000 then
begin
dbms_lob.writeappend(loc, len, blb);
update test_lob set ORIG_FILE=loc where TEST_ID=1;
--prog_debug_info_save('финиш');
end;
else
dbms_lob.writeappend(loc, len, blb);
end if;
end;
end if;
end; |