Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Oracle - BLOB поля  [new]
GrantSh
Member

Откуда:
Сообщений: 5
Всем привет. Тема много раз уже поднималась, но конкретных ответов я так и не нашел.
Сижу читаю книгу "Oracle PL/SQL для профессионалов" издательство Q'REILLY.
В главах посвященных BLOB объектам даны хорошие примеры для работы с CLOB-ами.
И в случае строк все описано понятно. Например: Запись данных в объекты типа LOB.
declare
adir CLOB;
aStr VARCHAR2(200);
begin
-- Создаем пустой локатор
INSERT INTO aTable(aName, aBlob)
VALUES('1', EMPTY_CLOB());

--Получаем локатор
SELECT aBlob INTO adir FROM aTable WHERE aName = '1';

DBMS_LOB.OPEN(adir, DBMS_LOB.READWRITE);

aStr := 'qwqwqwqwqwqwqwqwqwq';

.......
--Собственно запись
DBMS_LOB.WRITEAPPEND(adir, LENGTH(aStr), aStr);
.....

А как работать например, с картинками???
Как в такую процедуру передать картинку и как её сохранить?

В той же книге описан механизм занесения файлов с помощью BFILE. Но к сожалению такой вариант не подходит так как нужно создавать каталог с помошью процедуры CREATE DIRECTORY.

Заранее благодарен.
25 июн 07, 17:04    [4311927]     Ответить | Цитировать Сообщить модератору
 Re: Oracle - BLOB поля  [new]
tru55
Member

Откуда: СПб
Сообщений: 19790
А как работать например, с картинками???
Как в такую процедуру передать картинку и как её сохранить?

В той же книге описан механизм занесения файлов с помощью BFILE. Но к сожалению такой вариант не подходит так как нужно создавать каталог с помошью процедуры CREATE DIRECTORY


Вот как раз именно так, т.е. читать BLOB с внешнего файла. А записывать BLOB в базу или хранить его в виде BFILE - это уже твой выбор. А что cтрашного в CREATE DIRECTORY ?
25 июн 07, 17:09    [4311947]     Ответить | Цитировать Сообщить модератору
 Re: Oracle - BLOB поля  [new]
GrantSh
Member

Откуда:
Сообщений: 5
Спасибо за ответ. Дело в том что я пишу приложение на Delphi + Oracle.
Мне надо чтобы пользователь выбирал файлы на диске, а они бы уже сохранялись в базе.
Насколько я понимаю используя Create Directory файлы необходимо будет сначала ложить в тот каталог. А это не очень удобно. Я хочу написать хранимую процедуру, а в качестве параметра из Delphi передавать файл(например из стрима). Я не могу понять как пользоваться параметром который передается в хранимую процедуру.
25 июн 07, 17:19    [4312000]     Ответить | Цитировать Сообщить модератору
 Re: Oracle - BLOB поля  [new]
tru55
Member

Откуда: СПб
Сообщений: 19790
Тогда читаешь файл на клиенте средствами своего приложения, а в хранимую процедуру передаешь параметр типа BLOB. И поищи по форуму Delphi - вопрос уже неоднократно обсуждался
25 июн 07, 17:21    [4312011]     Ответить | Цитировать Сообщить модератору
 Re: Oracle - BLOB поля  [new]
GrantSh
Member

Откуда:
Сообщений: 5
Так в этом то и вопрос. Этот параметр процедуры типа BLOB - это локатор или это так называемый "временный объект типа LOB"? Что в нем храниться и как с ним в хранимке работать?
Можно ли будет написать так: DBMS_LOB.WRITEAPPEND(adir, LENGTH(aStr), aStr); где aStr типа BLOB?
25 июн 07, 17:28    [4312060]     Ответить | Цитировать Сообщить модератору
 Re: Oracle - BLOB поля  [new]
tru55
Member

Откуда: СПб
Сообщений: 19790
все написано в доке

PL/SQL User’s Guide and Reference

LOB Types

PL/SQL operates on LOBs through the locators. For example, when you select a
BLOB column value, only a locator is returned.


PS есть еще и это
Oracle9i Application Developer’s Guide - Large Objects (LOBs)
25 июн 07, 17:34    [4312091]     Ответить | Цитировать Сообщить модератору
 Re: Oracle - BLOB поля  [new]
GrantSh
Member

Откуда:
Сообщений: 5
В select из колонки понятно что выбирается локатор. Но все таки. Чем является параметр что передается в процедуру и как его сохранять?
25 июн 07, 18:11    [4312301]     Ответить | Цитировать Сообщить модератору
 Re: Oracle - BLOB поля  [new]
tru55
Member

Откуда: СПб
Сообщений: 19790
посмотри внимательно пакет DBMS_LOB, там есть такие процедуры как READ, WRITE...
25 июн 07, 18:18    [4312337]     Ответить | Цитировать Сообщить модератору
 Re: Oracle - BLOB поля  [new]
GrantSh
Member

Откуда:
Сообщений: 5
наверное я не корректно вопрос задал. Есть хранимая процедура на Оракл. Один из её параметров поле типа BLOB. Как из Delphi в него перелдать значение я знаю. А что с ним(параметром) делать в хранимой процедуре, то есть как сохранить в базе?
25 июн 07, 19:06    [4312527]     Ответить | Цитировать Сообщить модератору
 Re: Oracle - BLOB поля  [new]
ГостЪ
Guest
GrantSh
наверное я не корректно вопрос задал. Есть хранимая процедура на Оракл. Один из её параметров поле типа BLOB. Как из Delphi в него перелдать значение я знаю. А что с ним(параметром) делать в хранимой процедуре, то есть как сохранить в базе?


также как с clob'ом
25 июн 07, 19:56    [4312637]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить