Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / htp.p and ORA-06512 / 13 сообщений из 13, страница 1 из 1
04.11.2012, 20:10
    #38025149
Alex Zhulin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
htp.p and ORA-06512
Добрый день!
Есть сервер Oracle 11G
Пытаюсь выполнить процедуру

procedure test_ppo is
begin
htp.p('<?xml version = "1.0" encoding = "Windows-1251"?>');
htp.p('<report>');
htp.p('<answer>');
for i in 1 .. 100 loop
htp.p('<test>'||' test '||i||'</test>');
end loop;
htp.p('</answer>');
htp.p('</report>');
end;

Проблем нет
Но если вставляю кириллицу

procedure test_ppo is
begin
htp.p('<?xml version = "1.0" encoding = "Windows-1251"?>');
htp.p('<report>');
htp.p('<answer>');
for i in 1 .. 100 loop
htp.p('<test>'||' Тест '||i||'</test>');
end loop;
htp.p('</answer>');
htp.p('</report>');
end;

То при вызове получаю ошибку

ORA-06502: PL/SQL: numeric or value error: character string buffer too small<br>
ORA-06512: at "SYS.HTP", line 1550<br>
ORA-06512: at "SYS.HTP", line 1735<br>
ORA-06512: at "EXCELLENT.TEST_FUNCS", line 10<br>

Переполнение буфера происходит при использовании кириллицы.
Подскажите, пжл., почему?
...
Рейтинг: 0 / 0
06.11.2012, 09:10
    #38026227
dba123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
htp.p and ORA-06512
Alex Zhulin,

Вы в плюсе ошибку получаете или в браузере?
...
Рейтинг: 0 / 0
06.11.2012, 10:17
    #38026305
init.ora
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
htp.p and ORA-06512
...
Рейтинг: 0 / 0
06.11.2012, 11:49
    #38026470
htp.p and ORA-06512
select lengthb('Test'), lengthb('Тест')
from dual
...
Рейтинг: 0 / 0
06.11.2012, 12:49
    #38026586
непонятно
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
htp.p and ORA-06512
Alex Zhulin,

авторORA-06512: at "EXCELLENT. TEST_FUNCS ", line 10<br>
и
авторprocedure test_ppo
может не там смотрим
...
Рейтинг: 0 / 0
06.11.2012, 14:20
    #38026794
Alex Zhulin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
htp.p and ORA-06512
dba123Alex Zhulin,

Вы в плюсе ошибку получаете или в браузере?

В браузере ошибка.

Байт Байтовичselect lengthb('Test'), lengthb('Тест')
from dual

Вижу, что второе выражение получается в два раза больше.
Предполагаю, что из-за этого:

SELECT * FROM nls_database_parameters
WHERE parameter like 'NLS%CHARACTERSET';

PARAMETER VALUE
NLS_CHARACTERSET AL32UTF8
NLS_NCHAR_CHARACTERSET AL16UTF16

Нашел похожее решение проблемы вот здесь http://www.donotcommit.net/?p=158

Сделал alter system set NLS_LENGTH_SEMANTIC='CHAR';
Но после рестарта базы NLS_LENGTH_SEMANTIC вернулся обратно в BYTE

Как сделать параметр NLS_LENGTH_SEMANTIC = CHAR?
И в том ли я направлении двигаюсь?
...
Рейтинг: 0 / 0
06.11.2012, 14:37
    #38026832
Alex Zhulin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
htp.p and ORA-06512
init.ora,

Спасибо за ссылки.
Первую видел, но, честно говоря не нашел там решения своей проблемы. Точнее вообще не увидел решения проблемы (может невнимательно читал?)
Во второй ссылке автор хвастается, что написал свой аналог htp.p (боюсь, что это мне не подойдет :-))
...
Рейтинг: 0 / 0
06.11.2012, 14:39
    #38026838
htp.p and ORA-06512
А не проще ли просто глянуть EXCELLENT.TEST_FUNCS и там поправить цифорку в длине или же заменить на varchar2(* char)?
...
Рейтинг: 0 / 0
06.11.2012, 14:52
    #38026865
dba123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
htp.p and ORA-06512
Alex Zhulin,

а PlsqlNLSLanguage настроен как в dads.readme сказано
...
Рейтинг: 0 / 0
06.11.2012, 15:03
    #38026890
Alex Zhulin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
htp.p and ORA-06512
Байт БайтовичА не проще ли просто глянуть EXCELLENT.TEST_FUNCS и там поправить цифорку в длине или же заменить на varchar2(* char)?

Так проблема не в EXCELLENT.TEST_FUNCS, а в переполнении буфера в htp.p
...
Рейтинг: 0 / 0
06.11.2012, 15:04
    #38026895
Alex Zhulin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
htp.p and ORA-06512
dba123Alex Zhulin,

а PlsqlNLSLanguage настроен как в dads.readme сказано

Sorry, из меня администратор еще тот... Можете поподробнее сказать, где смотреть?
...
Рейтинг: 0 / 0
07.11.2012, 22:48
    #38029440
Alex Zhulin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
htp.p and ORA-06512
Возможно я поступил "не спортивно" ;-), но я победил эту фигню, отредактировав пакет htp

Изменил длину переменной в заголовке пакета

--type htbuf_arr is table of varchar2(256) index by binary_integer;
type htbuf_arr is table of varchar2(512) index by binary_integer;

И длину переменной в теле пакета

--htcurline varchar2(256) := ''; -- htbuf_arr element size
htcurline varchar2(512) := ''; -- htbuf_arr element size
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
25.05.2018, 15:22
    #39649982
AlexVin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
htp.p and ORA-06512
Doc ID 760084.1
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
begin
owa.num_cgi_vars := 0;
HTP.HTBUF_LEN := 128;
htp.init;
htp.htmlopen;
htp.p(rpad('Ф',500,'Ы'));
htp.htmlclose;
owa_util.showpage;
end;
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / htp.p and ORA-06512 / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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