powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как сделать копия LONG RAW
5 сообщений из 5, страница 1 из 1
Как сделать копия LONG RAW
    #32086160
Емил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В начале извините за грамматические ошибки, я болгарин.

Моя проблема:
Дана таблица tab1 - одна колонка LONG RAW (size ~ 1 - 5 MB (ето из .BMP))
Дана таблица tab_arhiv идентичной по структуре с tab1.
Мне нужен тригер (или продедура которя будет вызиваться в тригере)
на BEFORE DELETE и сделать копия строки которая удаляеться.

Искал и пробовал долго. Достиг до следющего:

CREATE OR REPLACE PROCEDURE My_Proc
is rawdata long raw;
begin
select file_data into rawdata from tab1 where file_id=XXX;
INSERT INTO tab_arhiv(file_data) VALUES ( rawdata);
end;

Ето работает в ORACLE 9, но не и в ORACLE 8.

из документации:
"...you can insert any LONG RAW value into a LONG RAW database
column because the maximum width of a LONG RAW column
is 2**31 bytes. However, you cannot retrieve a value longer
than 32760 bytes from a LONG RAW column
into a LONG RAW variable."

Как быть? Вед нельзя же иметь тип данных , а не иметь
средства для их обработки?!

(я знаю о BLOB, но задача о LONG RAW)

Спасибо за внимание.
...
Рейтинг: 0 / 0
Как сделать копия LONG RAW
    #32086187
ShgGena
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужно использовать пакет utl_raw. Он создается дополнительно скриптом utlraw.sql
в директории $ORACLE_HOME/rdbms/admin.
...
Рейтинг: 0 / 0
Как сделать копия LONG RAW
    #32086205
Емил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
К сожелении ето не поможет.
Вот ето работает, но толко если в поле не более 32К.
(по-крайней мере в ORACLE8 )

declare
v long raw;
n number;
begin
select file_data into v from file_object_subfiles;
select UTL_RAW.LENGTH(v) into n from dual;
DBMS_OUTPUT.Put_Line('n = ' || TO_CHAR(n));
end;

Я почти пришел к выводу что ето невозможно.
(хочу или нет явно мне надо переходит на BLOB. )
...
Рейтинг: 0 / 0
Как сделать копия LONG RAW
    #32086219
Фотография Oleg Afanasiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как здесь много раз обсуждалось, тип этот оставлен в Оракле только для совместимости и в дальнейшем они(оракловцы в смысле) собираются от него отказаться.

Потому переходите на LOB-ы и, я думаю, не будет проблем.
...
Рейтинг: 0 / 0
Как сделать копия LONG RAW
    #32086235
ShgGena
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
K sozhaleniu bolshaya chast obrobotky LONG RAW vinesena v OCI library na c/c++.
V pl/sql ochen malo sredstv.
Ogranichenie 32K - eto ogranichenie na varchar2 peremennie (ne putat s polyamy DB)
a v pl/sql Oracle modeliruet obrabotky LONG RAW ispolzuya vnutrennie buffera varchar2.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как сделать копия LONG RAW
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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