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

Откуда:
Сообщений: 115
Для пареобразования блоба в текст использую следующее выражение:
utl_raw.cast_to_varchar2(DBMS_LOB.SUBSTR (a.blob1, 2000) )

значение более 2000 постаивить нельзя - ошибка!

Я так понимаю что до 4000 байт можно попробовать пребразовать. Подскажите пожалуйста вариант.
спасибо
25 авг 10, 13:00    [9321844]     Ответить | Цитировать Сообщить модератору
 Re: BLOB to VARCHAR  [new]
Мир труд жвачка
Member

Откуда:
Сообщений: 1527
кодировка ?
25 авг 10, 13:02    [9321870]     Ответить | Цитировать Сообщить модератору
 Re: BLOB to VARCHAR  [new]
царевич
Member

Откуда:
Сообщений: 115
Мир труд жвачка,

Как узнать?
25 авг 10, 13:05    [9321890]     Ответить | Цитировать Сообщить модератору
 Re: BLOB to VARCHAR  [new]
царевич
Member

Откуда:
Сообщений: 115
Кодировка по 1 байту на символ
25 авг 10, 13:18    [9322022]     Ответить | Цитировать Сообщить модератору
 Re: BLOB to VARCHAR  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
царевич
Для пареобразования блоба в текст использую следующее выражение:
utl_raw.cast_to_varchar2(DBMS_LOB.SUBSTR (a.blob1, 2000) )

значение более 2000 постаивить нельзя - ошибка!

Я так понимаю что до 4000 байт можно попробовать пребразовать. Подскажите пожалуйста вариант.
спасибо


вааащета вам (думаю) нужен вариант функции DBMS_LOB.SUBSTR , где три параметра
25 авг 10, 13:23    [9322089]     Ответить | Цитировать Сообщить модератору
 Re: BLOB to VARCHAR  [new]
serjb
Member

Откуда: Астана->СПб
Сообщений: 254
царевич,
declare
x_b blob;
x_v varchar2(10):='1234567890';
x_r raw(10);
x_n pls_integer:=230;
begin
dbms_output.put_line('x_v='||length(x_v));
dbms_lob.createtemporary(lob_loc => x_b,cache => true);
x_r:=utl_raw.cast_to_raw(x_v);
for i in 1..1000
loop
dbms_lob.writeappend(lob_loc => x_b,amount => utl_raw.length(x_r),buffer => x_r);
end loop;
dbms_output.put_line('x_b='||dbms_lob.getlength(lob_loc => x_b));
--далее то что вам необходимо:
for r in 0..trunc(dbms_lob.getlength(lob_loc => x_b)/x_n)
loop
dbms_output.put_line(utl_raw.cast_to_varchar2(dbms_lob.substr(lob_loc => x_b,amount => x_n,offset => x_n*r+1)));
end loop;
end;
25 авг 10, 13:29    [9322166]     Ответить | Цитировать Сообщить модератору
 Re: BLOB to VARCHAR  [new]
царевич
Member

Откуда:
Сообщений: 115
serjb
царевич,
declare
x_b blob;
x_v varchar2(10):='1234567890';
x_r raw(10);
x_n pls_integer:=230;
begin
dbms_output.put_line('x_v='||length(x_v));
dbms_lob.createtemporary(lob_loc => x_b,cache => true);
x_r:=utl_raw.cast_to_raw(x_v);
for i in 1..1000
loop
dbms_lob.writeappend(lob_loc => x_b,amount => utl_raw.length(x_r),buffer => x_r);
end loop;
dbms_output.put_line('x_b='||dbms_lob.getlength(lob_loc => x_b));
--далее то что вам необходимо:
for r in 0..trunc(dbms_lob.getlength(lob_loc => x_b)/x_n)
loop
dbms_output.put_line(utl_raw.cast_to_varchar2(dbms_lob.substr(lob_loc => x_b,amount => x_n,offset => x_n*r+1)));
end loop;
end;

при поппытке выполнить выдает:
buffer overlow, limit of 10000 bytes
25 авг 10, 14:21    [9322705]     Ответить | Цитировать Сообщить модератору
 Re: BLOB to VARCHAR  [new]
Человек и Кошка
Member

Откуда: настоящему индейцу завсегда везде ништяк (с)
Сообщений: 830
царевич
при поппытке выполнить выдает:
buffer overlow, limit of 10000 bytes

Ну так увеличивай размер буфера.
25 авг 10, 14:35    [9322915]     Ответить | Цитировать Сообщить модератору
 Re: BLOB to VARCHAR  [new]
serjb
Member

Откуда: Астана->СПб
Сообщений: 254
царевич

при поппытке выполнить выдает:
buffer overlow, limit of 10000 bytes


SQL> set serveroutput on size 100000
25 авг 10, 14:37    [9322934]     Ответить | Цитировать Сообщить модератору
 Re: BLOB to VARCHAR  [new]
Человек и Кошка
Member

Откуда: настоящему индейцу завсегда везде ништяк (с)
Сообщений: 830
Человек и Кошка
царевич
при поппытке выполнить выдает:
buffer overlow, limit of 10000 bytes

Ну так увеличивай размер буфера.

exec dbms_output.enable(100000)
25 авг 10, 14:37    [9322935]     Ответить | Цитировать Сообщить модератору
 Re: BLOB to VARCHAR  [new]
altimer
Member

Откуда:
Сообщений: 16
set serveroutput on size 10000000
25 авг 10, 14:37    [9322936]     Ответить | Цитировать Сообщить модератору
 Re: BLOB to VARCHAR  [new]
Человек и Кошка
Member

Откуда: настоящему индейцу завсегда везде ништяк (с)
Сообщений: 830
altimer
set serveroutput on size 10000000

С количеством нолей не переборщил?
25 авг 10, 14:39    [9322957]     Ответить | Цитировать Сообщить модератору
 Re: BLOB to VARCHAR  [new]
tru55
Member

Откуда: СПб
Сообщений: 19790
PL/SQL Packages and Types Reference
10g Release 2 (10.2)


Typing SET SERVEROUTPUT ON in SQL*Plus has the effect of invoking

DBMS_OUTPUT.ENABLE (buffer_size => NULL);

with no limit on the output.

...

Rules and Limits

The default buffer size is 20000 bytes. The minimum size is 2000 bytes and the
maximum is unlimited.
25 авг 10, 14:44    [9323033]     Ответить | Цитировать Сообщить модератору
 Re: BLOB to VARCHAR  [new]
altimer
Member

Откуда:
Сообщений: 16
Человек и Кошка
altimer
set serveroutput on size 10000000

С количеством нолей не переборщил?

ок, в данном случае достаточно и 100000. С другой стороны, почему именно 100000 а не 50000, например?:)
25 авг 10, 14:48    [9323072]     Ответить | Цитировать Сообщить модератору
 Re: BLOB to VARCHAR  [new]
Человек и Кошка
Member

Откуда: настоящему индейцу завсегда везде ништяк (с)
Сообщений: 830
altimer
Человек и Кошка
altimer
set serveroutput on size 10000000

С количеством нолей не переборщил?

ок, в данном случае достаточно и 100000. С другой стороны, почему именно 100000 а не 50000, например?:)

Да не в этом дело :)

SQL> set serveroutput on size 10000000
SP2-0547: size option 10000000 out of range (2000 through 1000000)
25 авг 10, 14:53    [9323124]     Ответить | Цитировать Сообщить модератору
 Re: BLOB to VARCHAR  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
>= 10.2
set serveroutput on size unl
25 авг 10, 15:03    [9323245]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить