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

В одном пакете есть "зашитая" строка, которая передается на вход процедуры из другого пакета, и там эта строка посимвольно в цикле обрабатывается SUBSTR и каждый символ из этой строки записывается в переменную char(1).
И тут на первом же символе - ORA-06502: PL/SQL: numeric or value error: character string buffer too small

PL/SQL Developer в дебагере корректно показывает строку, которая пришла на вход процедуры, но чую, что со строкой всё же что-то не так. Поясню на примере:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
SQL> select substr('Тест',1, 1) from dual;
SUBSTR('ТЕСТ',1,1)
----------------------
Т
SQL> select substr('Да,Нет,Не определено,',1, 1) from dual;
SUBSTR('ДОМ,КВАРТИРР
------------------------------
Д


Первая строка "Тест" напечатано мной, а вторая строка "Да,Нет,Не определено" - взята из дебагера.
Здесь видно, что после выполнения запроса во второй строке кракозябры (SUBSTR('ДОМ,КВАРТИРР)

Примечание:
1. На проде описанная ситуация не проявляется
2. Клонирование осуществлялось expdp/impdp full=y
...
Рейтинг: 0 / 0
Кодировка строки в пакете
    #39343780
pixela
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Упс, оказалось еще чудесатей...

На проде этот блок
Код: plsql
1.
2.
3.
4.
5.
declare 
  s varchar2(1);
begin
  s := substr('Тест', 1, 1);
end;


выполняется без ошибки.
А на тестовой - всё та же ошибка: ORA-06502: PL/SQL: numeric or value error: character string buffer too small
...
Рейтинг: 0 / 0
Кодировка строки в пакете
    #39343794
йфя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
сравни CHARACTERSET'ные параметры баз

Код: plsql
1.
2.
SELECT *
FROM nls_database_parameters
...
Рейтинг: 0 / 0
Кодировка строки в пакете
    #39343809
локатор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pixela,

а так?

declare
s varchar2(1 char);
begin
s := substr('Тест', 1, 1);
dbms_output.put_line(s);
end;


utf8?
...
Рейтинг: 0 / 0
Кодировка строки в пакете
    #39343824
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
йфясравни CHARACTERSET'ные параметры базNLS_LENGTH_SEMANTIC
...
Рейтинг: 0 / 0
Кодировка строки в пакете
    #39343962
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elicйфясравни CHARACTERSET'ные параметры базNLS_LENGTH_SEMANTIC

В данном конкретном случае
pixela
Код: plsql
1.
2.
3.
4.
SQL> select substr('Да,Нет,Не определено,',1, 1) from dual;
SUBSTR('ДОМ,КВАРТИРР
------------------------------
Д



все-таки начать следует с банального NLS_LANG и букваря к нему :)
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Кодировка строки в пакете
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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