|
|
|
String truncate & Oracle
|
|||
|---|---|---|---|
|
#18+
Имеем 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. Есть некий запрос, в котором значение столбца формируется некой функцией, возвращающей VARCHAR2(3000) . Запрос отрабатывает нормально, когда выполняю его из под SQL Developer . Когда на основе запроса делается DataWindow , то в нем показывается только 453 символа. Данный результат получается с помощью функции Len . Если смотреть из SQL Developer , то длина строки (как в DW ) равна 154 - это получил, используя SUBSTR . Вот, блин, запарился ПОЧЕМУ происходит обрезание строки? Уверен, что из-за OraHome92 драйвера, но Филипп сказал , что ограничение 32Кбайт . Подскажите, плиз, как мне тут подсчитать количество байтов, передаваемое клиенту? Хотя, явно 32Кбайт моя строка не может превышать при таком раскладе. Где трабл? Помогите. Надо сегодня как-то разрулить ЭТО... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2008, 13:39 |
|
||
|
String truncate & Oracle
|
|||
|---|---|---|---|
|
#18+
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; разница значений - количество байт, которое Оракл отправил клиенту, но не обольщайтесь - оракл может отпарвить вам в одной кодировке - например многобайтной, а на клиенте это дело далее преобразовано в однобайтную для отображения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2008, 15:11 |
|
||
|
String truncate & Oracle
|
|||
|---|---|---|---|
|
#18+
denix1посмотрите для начала сколько реально данные занимают в базе т.е. SELECT LENGTH(col1) FROM tab1 Ответ 453 . Хм... Да, похоже, отправляется и получается то, что нужно. Видимо, трабла с самим DataWindow , он как-то обрезает данные. Хотя, тоже не понятно как, ибо окно и DW пустые полностью Autosize Height выставлен и в Detail и в столбце. Да, согласен, дело не в драйвере. Спасибо, denix1 . Вопрос с Oracle исчерпан. Подожду, что скажут PowerBuilder -щики. denix1опять же желательно знать какая кодировка на клиенте Unicode у PowerBuilder 10.5 всегда... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2008, 15:31 |
|
||
|
String truncate & Oracle
|
|||
|---|---|---|---|
|
#18+
Впрочем, нет. Дело таки в драйвере. Щас глянул, КАК обрезается строка. Последний символ, видимый на экране, как раз соответствует концу переданной строки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2008, 15:38 |
|
||
|
String truncate & Oracle
|
|||
|---|---|---|---|
|
#18+
Вот тут была темка. Как мы выяснили с Denis Popov , увеличение длины стринговых полей в три раза, вполне нормально для моего случая. 154 на сервере, преобразуются как-то "почти умножением на ТРИ" в 453 на клиенте. To denix1 Размер, конечно важен, но волнует таки корректность отображение данных. Может еще какие-то идеи есть? Не поделитесь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2008, 15:47 |
|
||
|
String truncate & Oracle
|
|||
|---|---|---|---|
|
#18+
Мдя, похоже, я зря все это написал. На самом деле, на клиенте все тоже самое, что и возвращается сервером, просто данных в строке много и они отсортированы. Соответственно, тестеры не стали проверять, СКОЛЬКО элементов возвращается, и пометили это, как issue. А я повелся. Щас проверил все руками, все ОК, правда, последняя буква куда-то исчезает... Ладно, будем считать, что тема закрыта. Спасибо всем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2008, 16:52 |
|
||
|
String truncate & Oracle
|
|||
|---|---|---|---|
|
#18+
Black Savage Филипп сказал , что ограничение 32Кбайт ... Вы бы хоть читали, о чём там речь, прежде чем меня цитировать - там о длине самого SQL запроса, а не о том, что он возвращает... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2008, 21:40 |
|
||
|
|

start [/forum/topic.php?fid=15&tid=1336723]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
35ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
2ms |
| others: | 15ms |
| total: | 140ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...