powered by simpleCommunicator - 2.0.39     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / ODAC
3 сообщений из 3, страница 1 из 1
ODAC
    #32045003
MW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oracle 9i под linux в кодировке KOI8R (и база и ос). Пишется приложение под Windows на Delphi, для доступа к БД используется ODAC (Oracle Data Access Components). Специфика приложения такова, что клиента Oracle на пользовательскую машину не поставить. ODAC позволяет соединяться с Oracle на прямую через TCP/IP.
Проблема: При прямом соединении приложение сортирует выводимые данные в KOI8 (Ю,А,Б,Ц,Д,...), но буковки отображаются нормально (текст читается), при соединении через SQL*Net все нормально.
Может кто "наступал" - подскажите как полечить ODAC?
...
Рейтинг: 0 / 0
ODAC
    #32045033
none
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возможно не совсем в тему, но может вас натолкнет на какието дальнейшие размышления:

сушествуют 2 сортировки: одна с учетом параметров NLS, другая без (то есть используются ASCII коды символов).

Вот такой пример для виндовозной базы с Win1251:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
create table table_x1 (string1 varchar2( 10 ));
insert into table_x1 (string1) values ('111');
insert into table_x1 (string1) values ('bbb');
insert into table_x1 (string1) values ('ббб');  -- рус.
 
insert into table_x1 (string1) values ('aaa');  -- рус.
 
commit;

SQL> select * from table_x1 order by string1;

STRING1
 ----------
 
bbb
ааа
ббб
 111 


видно, что выбралось с учетом NLS, потому, что какого черта еничнички вконце

а теперь без:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SQL> select * from table_x1 
   2   order by NLSSORT (string1, 'NLS_SORT=BINARY');

STRING1
 ----------
 
 111 
bbb
ааа
ббб


а вот так уже без учета NLS. Кстате, выборка с использованием индексов использует подобный метод.
...
Рейтинг: 0 / 0
ODAC
    #32045093
MW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем большое спасибо за оказанную помощь ;)
Проблема решилась: оказывается при создании session в режиме прямого соединения с Oracle ODAC не устанавливает параметр NLS_SORT=RUSSIAN для нового session, этот параметр стоит в BINARY. А в режиме соединения через Oracle-клиента все выставляется замечательно.
С помощью компоненты OraSession меняем на нужный и вперед!!!
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / ODAC
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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