|
|
|
PB10. Ошибки внутри программы при передаче строковых переменных в SQL
|
|||
|---|---|---|---|
|
#18+
Программа была на PB6. перенесли на PB10 и проблема. Запускаю свою программу и вижу всередине такие проблемы, что передаётся ТОЛЬКО ПЕРВАЯ буква АНГЛИЙСКИХ строк и везде в итоге получается ошибка "no data found". На скриншоте видно, что вместо строки 'vattest' в запрос биндится буква 'v'. Ошибка происходит на обеих бибилиотеках dbms=O84 Oracle8/8i (8.x.4+) и dbms=O90 Oracle9i (9.0.1). Окружение: WinXP, Oracle9 client Вопрос: почему передаётся только первая буква вместо всей строки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2007, 12:42 |
|
||
|
PB10. Ошибки внутри программы при передаче строковых переменных в SQL
|
|||
|---|---|---|---|
|
#18+
web_fox wrote: > Программа была на PB6. перенесли на PB10 и проблема. > Запускаю свою программу и вижу всередине такие проблемы, что передаётся > ТОЛЬКО ПЕРВАЯ буква АНГЛИЙСКИХ строк Похоже на последствия перехода от ANSI к Unicode. Но я не припомню, чтобы у кого-то ещё была такая проблема... Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2007, 12:56 |
|
||
|
PB10. Ошибки внутри программы при передаче строковых переменных в SQL
|
|||
|---|---|---|---|
|
#18+
Спасибо. А что момжно попробовать исправить, чтобы делу помочь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2007, 13:28 |
|
||
|
PB10. Ошибки внутри программы при передаче строковых переменных в SQL
|
|||
|---|---|---|---|
|
#18+
web_foxСпасибо. А что можно попробовать исправить, чтобы делу помочь? Прежде чем попасть в запрос, строка случайно не обрабатывается в какой-то внешней DLL? Такой эффект наблюдается когда уникодную строку передают в C ф-ю, ожидающую ANSI строку ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2007, 14:53 |
|
||
|
PB10. Ошибки внутри программы при передаче строковых переменных в SQL
|
|||
|---|---|---|---|
|
#18+
>> Такой эффект наблюдается когда уникодную строку передают в C ф-ю, ожидающую ANSI строку Именно. При миграции ПБ сам добавляет ANSI-определения в внешним ф-циям. Но только при миграции. При экпорте нет. Надо вручную прописывать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2007, 15:23 |
|
||
|
PB10. Ошибки внутри программы при передаче строковых переменных в SQL
|
|||
|---|---|---|---|
|
#18+
в базе кодировка какая? ANSI? какой NLS_LANG на клиенте? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2007, 15:52 |
|
||
|
PB10. Ошибки внутри программы при передаче строковых переменных в SQL
|
|||
|---|---|---|---|
|
#18+
ЗоринАндрейкакой NLS_LANG на клиенте? ИМХО драйвер Оракла в PB переводит все строки в ту кодировку, что указана в NLS_LANG клиента и здесь никаких проблем не должно быть при любой кодировке в NLS_LANG (в крайнем случае появятся "?" если преобразование невозможно, но обрезать не должно). Т.е. проблема возникает раньше, до передачи строки в драйвер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2007, 16:24 |
|
||
|
PB10. Ошибки внутри программы при передаче строковых переменных в SQL
|
|||
|---|---|---|---|
|
#18+
Похоже на это: http://]www.sql.ru/forum/actualthread.aspx?tid=321178&hl=riska#2950501 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2007, 16:53 |
|
||
|
PB10. Ошибки внутри программы при передаче строковых переменных в SQL
|
|||
|---|---|---|---|
|
#18+
Извиняюсь, что долго не отвечал. Так вот, сколько не мучался всего не перебирал. Ничего не помогало. dbparm=NLS_Charset="Local",STRbyCharset=1 тоже не помогает. БД стоит: 9.2 Клиент: 9.2 NLS_LANG AMERICAN_AMERICA.CL8MSWIN1251 PB библиотека: O84 Oracle8/8i Всё заработало, только когда включил параметр dbparm=DisableUnicode=1 С библиотекой O90 Oracle9i (9.0.1) правильной работы добиться вообще не удалось. Да и клиентский трейсер показывает её работу почти без информации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2007, 13:26 |
|
||
|
PB10. Ошибки внутри программы при передаче строковых переменных в SQL
|
|||
|---|---|---|---|
|
#18+
PaulJB>> Такой эффект наблюдается когда уникодную строку передают в C ф-ю, ожидающую ANSI строку Именно. При миграции ПБ сам добавляет ANSI-определения в внешним ф-циям. Но только при миграции. При экпорте нет. Надо вручную прописывать. Селекты делаются прямо из PB-программы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2007, 13:29 |
|
||
|
PB10. Ошибки внутри программы при передаче строковых переменных в SQL
|
|||
|---|---|---|---|
|
#18+
Using the O90 or O10 database interface, PowerBuilder can connect, save, and retrieve data in both ANSI/DBCS and Unicode databases, but it does not convert data between Unicode and ANSI/DBCS. When character data or command text is sent to the database, PowerBuilder sends a Unicode string. The driver must guarantee that the data is saved as Unicode data correctly. When PowerBuilder retrieves character data, it assumes the data is Unicode. Using the O84 database interface, PowerBuilder detects whether the Oracle client variable NLS_LANG is set. If the variable is set to a value that requires UTF-8 or DBCS characters, PowerBuilder converts command text (such as SELECT * FROM emp) to the appropriate character set before sending the command to the database. However, if DisableBind is set to 0 (the default), PowerBuilder always binds string data as Unicode data. Using O84, you can set the DisableUnicode database parameter to 1 to retrieve data as an ANSI string. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2007, 13:37 |
|
||
|
PB10. Ошибки внутри программы при передаче строковых переменных в SQL
|
|||
|---|---|---|---|
|
#18+
ЗоринАндрей Using the O90 or O10 database interface,... string. Спасибо, Андрей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2007, 13:42 |
|
||
|
PB10. Ошибки внутри программы при передаче строковых переменных в SQL
|
|||
|---|---|---|---|
|
#18+
А как тогда добиться работы программы с O90? Самому конвертировать в Unicode? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2007, 13:43 |
|
||
|
PB10. Ошибки внутри программы при передаче строковых переменных в SQL
|
|||
|---|---|---|---|
|
#18+
Кстати я так и не увидел какая именно версия десятки используется. Вот из 10.2 например новый параметр в DBParm NCharBind database parameter for Oracle The NCharBind database parameter for Oracle9i and Oracle 10g improves performance by allowing you to specify whether string variables should be treated as Char or NChar datatypes. The default is to treat string variables as Char datatypes. You can set this parameter on the Transaction tab page in the Database Profile Setup dialog box for Oracle9i and Oracle 10g. For more information, see NCharBind in the online Help. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2007, 13:57 |
|
||
|
PB10. Ошибки внутри программы при передаче строковых переменных в SQL
|
|||
|---|---|---|---|
|
#18+
web_foxА как тогда добиться работы программы с O90? Самому конвертировать в Unicode? У меня O90 работает без проблем. DBParm - пустой. PB10.0, 10.2.1 Oracle client 9.2.0.1, server 9.2.0.4 NLS_LANG=RUSSIAN_GERMANY.CL8MSWIN1251 Вот код: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Приведите минимальный пример, на котором наблюдается ошибка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2007, 14:46 |
|
||
|
PB10. Ошибки внутри программы при передаче строковых переменных в SQL
|
|||
|---|---|---|---|
|
#18+
ЗоринАндрейКстати я так и не увидел какая именно версия десятки используется. Вот из 10.2 например новый параметр в DBParm NCharBind database parameter for Oracle The NCharBind database parameter for Oracle9i and Oracle 10g improves performance by allowing you to specify whether string variables should be treated as Char or NChar datatypes. The default is to treat string variables as Char datatypes. You can set this parameter on the Transaction tab page in the Database Profile Setup dialog box for Oracle9i and Oracle 10g. For more information, see NCharBind in the online Help. Версия 10.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2007, 17:53 |
|
||
|
PB10. Ошибки внутри программы при передаче строковых переменных в SQL
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyПриведите минимальный пример, на котором наблюдается ошибка. Извините, локализовать пока не могу. На этом результате я остановлюсь, т.к. работы на 8 библиотеке достаточно. Спасибо за помощь и, надеюсь, эта ошибка дала какой-то опыт участникам форума. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2007, 17:55 |
|
||
|
|

start [/forum/topic.php?fid=15&gotonew=1&tid=1336976]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
44ms |
get topic data: |
9ms |
get first new msg: |
5ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
| others: | 11ms |
| total: | 155ms |

| 0 / 0 |

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