powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / String truncate & Oracle
7 сообщений из 7, страница 1 из 1
String truncate & Oracle
    #35222378
Black Savage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имеем
PowerBuilder 10.5.2 Build 7564
Oracle 10g
Соединение с базой идет через Native driver Oracle in OraHome92, version 9.02.00.00
Настройка базы:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT parameter,
  VALUE
FROM nls_database_parameters
WHERE parameter = 'NLS_CHARACTERSET';

PARAMETER                            VALUE                                    
------------------------------ ---------------------------------------- 
NLS_CHARACTERSET                UTF8                                     

 1  rows selected

Есть некий запрос, в котором значение столбца формируется некой функцией, возвращающей
VARCHAR2(3000) . Запрос отрабатывает нормально, когда выполняю его из под
SQL Developer . Когда на основе запроса делается DataWindow , то в нем показывается
только 453 символа. Данный результат получается с помощью функции Len . Если
смотреть из SQL Developer , то длина строки (как в DW ) равна 154 - это получил,
используя SUBSTR .

Вот, блин, запарился ПОЧЕМУ происходит обрезание строки? Уверен, что из-за OraHome92
драйвера, но Филипп сказал , что ограничение 32Кбайт .

Подскажите, плиз, как мне тут подсчитать количество байтов, передаваемое клиенту? Хотя,
явно 32Кбайт моя строка не может превышать при таком раскладе.

Где трабл? Помогите. Надо сегодня как-то разрулить ЭТО...
...
Рейтинг: 0 / 0
String truncate & Oracle
    #35222439
denix1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Black SavageВот, блин, запарился ПОЧЕМУ происходит обрезание строки? Уверен, что из-за OraHome92
драйвера, но Филипп сказал , что ограничение 32Кбайт
(с)скорая П.

а причем тут может быть OraHome92 ?
посмотрите для начала сколько реально данные занимают в базе т.е. SELECT LENGTH(col1) FROM tab1;
опять же желательно знать какая кодировка на клиенте, припример в БД может быть
многобайтовая, а на клиенте однобайтовая
с другой стороны....
вас реально волнует размер поля или корректность отображения данных ? т.е. есть ли реально "обрезание" ?

узнать сколько оракл реально передал данных можно сделав срез статистики по сессии
до выполнения fetch и после оного, например так
ищем SID нужно сессии по v$session или
select sid from v$mystat where rownum <2; --выполнив из искомой сессии
далее подготавливем запрос для выполнения - это специфически для используемых вами инструментальных средства
из другой сессии замеряем сколько сейчас было переданно байт от оракла вам
select value from v$sesstat where statistic#=343 and sid=&SID;
делаете FETCH нужной строки - желательно что бы в запросе было только искомое поле
далее еще раз
select value from v$sesstat where statistic#=343 and sid=&SID;
разница значений - количество байт, которое Оракл отправил клиенту,
но не обольщайтесь - оракл может отпарвить вам в одной кодировке - например многобайтной,
а на клиенте это дело далее преобразовано в однобайтную для отображения
...
Рейтинг: 0 / 0
String truncate & Oracle
    #35222449
Black Savage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
denix1посмотрите для начала сколько реально данные занимают в базе т.е. SELECT LENGTH(col1) FROM tab1
Ответ 453 . Хм... Да, похоже, отправляется и получается то, что нужно.
Видимо, трабла с самим DataWindow , он как-то обрезает данные. Хотя, тоже
не понятно как, ибо окно и DW пустые полностью Autosize Height выставлен
и в Detail и в столбце. Да, согласен, дело не в драйвере.

Спасибо, denix1 . Вопрос с Oracle исчерпан.
Подожду, что скажут PowerBuilder -щики.


denix1опять же желательно знать какая кодировка на клиенте
Unicode у PowerBuilder 10.5 всегда...
...
Рейтинг: 0 / 0
String truncate & Oracle
    #35222456
Black Savage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Впрочем, нет. Дело таки в драйвере. Щас глянул, КАК обрезается строка.
Последний символ, видимый на экране, как раз соответствует концу переданной строки
...
Рейтинг: 0 / 0
String truncate & Oracle
    #35222463
Black Savage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот тут была темка.
Как мы выяснили с Denis Popov , увеличение длины стринговых полей в три раза,
вполне нормально для моего случая.

154 на сервере, преобразуются как-то "почти умножением на ТРИ" в 453 на клиенте.

To denix1
Размер, конечно важен, но волнует таки корректность отображение данных. Может еще
какие-то идеи есть? Не поделитесь?
...
Рейтинг: 0 / 0
String truncate & Oracle
    #35222501
Black Savage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мдя, похоже, я зря все это написал.
На самом деле, на клиенте все тоже самое, что и возвращается сервером,
просто данных в строке много и они отсортированы.

Соответственно, тестеры не стали проверять, СКОЛЬКО элементов возвращается,
и пометили это, как issue. А я повелся. Щас проверил все руками, все ОК, правда,
последняя буква куда-то исчезает...

Ладно, будем считать, что тема закрыта. Спасибо всем.
...
Рейтинг: 0 / 0
String truncate & Oracle
    #35223268
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Black Savage Филипп сказал , что ограничение 32Кбайт ...
Вы бы хоть читали, о чём там речь, прежде чем меня цитировать - там о длине самого SQL запроса, а не о том, что он возвращает...
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / String truncate & Oracle
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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