Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 не получается добавить запись в поле LONG RAW  [new]
some123
Guest
Здравствуйте.
Бьюсь уже целый день. не могу добавить запись в таблицу с полем LONG ROW
create table MEMO
(
  CODE     NUMBER(10) default 0,
  TEXT     LONG RAW
)

необходимо добавить запись в поле TEXT ровно 20000 байт.
При этом формат в HEX идет как
1. первые 4 - это длина добавляемой строки (т.е. длина ttt) в преобразованном виде.
2. с 5 - это сам текст непосредственно для добавления
3. и остальное должно быть заполнено нулями до 20К байт

DECLARE
  l_Memo      LONG RAW;

  ttt VARCHAR2(30000):= '12';
BEGIN

l_memo:= RPAD('0200'||rawtohex(utl_raw.cast_to_raw(ttt)),32000,'0');

INSERT INTO memo (code, text) VALUES
(50, l_memo);

END;

если сделать вот так:
l_memo:= RPAD('0200'||rawtohex(utl_raw.cast_to_raw(ttt)),40000,'0');
то выпадает ошибка: ORA-06502: буфер символьных строк слишком маленький ошибка числа или значения.

подскажите что можно придумать, хотя бы по пункту 3.
Большое спасибо!
22 окт 10, 12:29    [9656036]     Ответить | Цитировать Сообщить модератору
 Re: не получается добавить запись в поле LONG RAW  [new]
xtender
Member

Откуда: Мск
Сообщений: 5704
some123, замените rpad на utl_raw.copies и объедините через utl_raw.concat
22 окт 10, 12:47    [9656268]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить