как в Oracle преобразовать BLOB в LONG RAW
От: Gvaerodin  
Дата: 09.02.06 09:01
Оценка:
Добрый день! Помогите пожалуйста! Ооочень надо! Как можно преобразовать тип BLOB в LONG RAW.
Re: как в Oracle преобразовать BLOB в LONG RAW
От: Alexey Frolov Беларусь  
Дата: 09.02.06 10:29
Оценка:
Здравствуйте, Gvaerodin, Вы писали:

G>Добрый день! Помогите пожалуйста! Ооочень надо! Как можно преобразовать тип BLOB в LONG RAW.


А можно поинтересоваться чем продиктована такая постановка задачи. Обычно надо бывает наоборот. Тип LONG RAW это уже рудимент в оракле и оракл настоятельно рекомендует переходить на BLOB. Если не сложно, поясните для чего это надо?
Re[2]: как в Oracle преобразовать BLOB в LONG RAW
От: Gvaerodin  
Дата: 09.02.06 10:40
Оценка:
Здравствуйте, Alexey Frolov, Вы писали:

AF>Здравствуйте, Gvaerodin, Вы писали:


G>>Добрый день! Помогите пожалуйста! Ооочень надо! Как можно преобразовать тип BLOB в LONG RAW.


AF>А можно поинтересоваться чем продиктована такая постановка задачи. Обычно надо бывает наоборот. Тип LONG RAW это уже рудимент в оракле и оракл настоятельно рекомендует переходить на BLOB. Если не сложно, поясните для чего это надо?


Дело в том что в есть уже куча софта который работает с LONG RAW данными в базе и заказчик не собирается ничего менять. Я написал dll которая получает на входе BLOB (изображение) переворачивает его и возвращает обратно в BLOB а оказалось что надо в LONG RAW
Re[3]: как в Oracle преобразовать BLOB в LONG RAW
От: Alexey Frolov Беларусь  
Дата: 09.02.06 10:54
Оценка:
Здравствуйте, Gvaerodin, Вы писали:

AF>>Здравствуйте, Gvaerodin, Вы писали:


G>Дело в том что в есть уже куча софта который работает с LONG RAW данными в базе и заказчик не собирается ничего менять. Я написал dll которая получает на входе BLOB (изображение) переворачивает его и возвращает обратно в BLOB а оказалось что надо в LONG RAW


DLL ведь ваша, что мешает на входе получать блоб а на выходе писать данные в LONG RAW? Какими средствами вы пользуетесь для записи в базу?
Re[4]: как в Oracle преобразовать BLOB в LONG RAW
От: Gvaerodin  
Дата: 09.02.06 10:58
Оценка:
Здравствуйте, Alexey Frolov, Вы писали:

AF>Здравствуйте, Gvaerodin, Вы писали:


AF>>>Здравствуйте, Gvaerodin, Вы писали:


G>>Дело в том что в есть уже куча софта который работает с LONG RAW данными в базе и заказчик не собирается ничего менять. Я написал dll которая получает на входе BLOB (изображение) переворачивает его и возвращает обратно в BLOB а оказалось что надо в LONG RAW


AF>DLL ведь ваша, что мешает на входе получать блоб а на выходе писать данные в LONG RAW? Какими средствами вы пользуетесь для записи в базу?


пользую OCI — получаю на входе OCILOBLocator вот его я и хотел бы преобразовать в LONG RAW и у меня не получается это сделать.
Re: как в Oracle преобразовать BLOB в LONG RAW
От: Denis Popov Россия http://picasaweb.google.com/denislpopov
Дата: 09.02.06 11:49
Оценка:
Здравствуйте, Gvaerodin, Вы писали:

G>Добрый день! Помогите пожалуйста! Ооочень надо! Как можно преобразовать тип BLOB в LONG RAW.


Может в лоб, через запись BLOB'а в поле типа LONG RAW и вытаскивания его оттуда? По крайней мере на Oracle 9i прокатывает следующее:


declare
  r raw(32);
  b blob;
  lr long raw;
begin
  -- Формирование тестового BLOB'а
  dbms_lob.createTemporary(b, false, dbms_lob.SESSION);
  r := utl_raw.cast_to_raw('1234567890');
  for i in 1 .. 10000 loop
    dbms_lob.writeAppend(b, 10, r);
  end loop;
  -- Cобственно запись его в поле LONG RAW
  delete test_long;
  insert into test_long (lrdata) values (b);
  select lrdata into lr from test_long;
  commit;
end;
/
Re[2]: как в Oracle преобразовать BLOB в LONG RAW
От: Denis Popov Россия http://picasaweb.google.com/denislpopov
Дата: 09.02.06 11:54
Оценка:
Забыл:
create table test_long (lrdata long raw);
Re[5]: как в Oracle преобразовать BLOB в LONG RAW
От: Alexey Frolov Беларусь  
Дата: 09.02.06 11:56
Оценка:
Здравствуйте, Gvaerodin, Вы писали:

G>пользую OCI — получаю на входе OCILOBLocator вот его я и хотел бы преобразовать в LONG RAW и у меня не получается это сделать.


Но ведь для того чтобы конвертировать данные вы наверняка читаете их в буфер, я не прав? Затем этот буфер можно забиндить в sql запрос OCIBindByPos и записать в поле LONG RAW
Re[5]: как в Oracle преобразовать BLOB в LONG RAW
От: wildwind Россия  
Дата: 09.02.06 11:56
Оценка: 1 (1)
Здравствуйте, Gvaerodin, Вы писали:

G>пользую OCI — получаю на входе OCILOBLocator вот его я и хотел бы преобразовать в LONG RAW и у меня не получается это сделать.


А как пытался?
Размер этих LONG RAW может быть произвольным или ограничен?
Re[6]: как в Oracle преобразовать BLOB в LONG RAW
От: Alexey Frolov Беларусь  
Дата: 09.02.06 11:58
Оценка:
Здравствуйте, wildwind, Вы писали:

W>Здравствуйте, Gvaerodin, Вы писали:

W>А как пытался?
W>Размер этих LONG RAW может быть произвольным или ограничен?

+1
Нужно учесть ограничения LONG RAW. Именно поэтому из BLOB в LONG RAW напрямую данные не конвертятся.
Re[6]: как в Oracle преобразовать BLOB в LONG RAW
От: Gvaerodin  
Дата: 09.02.06 12:11
Оценка:
Здравствуйте, Alexey Frolov, Вы писали:

AF>Здравствуйте, Gvaerodin, Вы писали:


G>>пользую OCI — получаю на входе OCILOBLocator вот его я и хотел бы преобразовать в LONG RAW и у меня не получается это сделать.


AF>Но ведь для того чтобы конвертировать данные вы наверняка читаете их в буфер, я не прав? Затем этот буфер можно забиндить в sql запрос OCIBindByPos и записать в поле LONG RAW


Я получаю в dll указатель на OCILOBLocator из него читаю данные в буфер затем эти данные в поток — затем с помощью gdiplus работаю с изображением — и затем по обратному алгоритму — данные в поток — затем в буфер — затем в указатель на OCILobLocator — а теперь необходимо сделать что бы данные писались не в OCILobLocator а в OCIRaw. Контекста у меня нет. соединения тоже. т.к это dll.
Re[7]: как в Oracle преобразовать BLOB в LONG RAW
От: Alexey Frolov Беларусь  
Дата: 09.02.06 13:29
Оценка:
Здравствуйте, Gvaerodin, Вы писали:

G>Я получаю в dll указатель на OCILOBLocator из него читаю данные в буфер затем эти данные в поток — затем с помощью gdiplus работаю с изображением — и затем по обратному алгоритму — данные в поток — затем в буфер — затем в указатель на OCILobLocator — а теперь необходимо сделать что бы данные писались не в OCILobLocator а в OCIRaw. Контекста у меня нет. соединения тоже. т.к это dll.


Как это нет контекста, а как вы читаете данные. Можно взглянуть на тот участок кода?
Re[8]: как в Oracle преобразовать BLOB в LONG RAW
От: Gvaerodin  
Дата: 10.02.06 04:08
Оценка:
Здравствуйте, Alexey Frolov, Вы писали:

AF>Здравствуйте, Gvaerodin, Вы писали:


G>>Я получаю в dll указатель на OCILOBLocator из него читаю данные в буфер затем эти данные в поток — затем с помощью gdiplus работаю с изображением — и затем по обратному алгоритму — данные в поток — затем в буфер — затем в указатель на OCILobLocator — а теперь необходимо сделать что бы данные писались не в OCILobLocator а в OCIRaw. Контекста у меня нет. соединения тоже. т.к это dll.


AF>Как это нет контекста, а как вы читаете данные. Можно взглянуть на тот участок кода?


Извините просто голова уже не варила — контекст есть конечно.
Re[9]: как в Oracle преобразовать BLOB в LONG RAW
От: Alexey Frolov Беларусь  
Дата: 10.02.06 09:40
Оценка:
Здравствуйте, Gvaerodin, Вы писали:

G>Здравствуйте, Alexey Frolov, Вы писали:


AF>>Здравствуйте, Gvaerodin, Вы писали:


G>>>Я получаю в dll указатель на OCILOBLocator из него читаю данные в буфер затем эти данные в поток — затем с помощью gdiplus работаю с изображением — и затем по обратному алгоритму — данные в поток — затем в буфер — затем в указатель на OCILobLocator — а теперь необходимо сделать что бы данные писались не в OCILobLocator а в OCIRaw. Контекста у меня нет. соединения тоже. т.к это dll.


AF>>Как это нет контекста, а как вы читаете данные. Можно взглянуть на тот участок кода?


G>Извините просто голова уже не варила — контекст есть конечно.


В таком случае на выходе пишете запрос update pictutes_table set content=:1 where id=:2, ну или что то в этом духе и биндите буфер с бинарными данными. А вот интересно откуда берется LOBLocator если база блобами не пользуется?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.