powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Контекст драйвера доступа в ASE
7 сообщений из 7, страница 1 из 1
Контекст драйвера доступа в ASE
    #34123830
Andyn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть ли в ASE такое понятие как контекст драйвера доступа или что-то наподобие? Потому что иначе ничем объяснить проблему не могу.

Поясню на примере: ASE 12.5.2; есть прокси-таблица созданная на основе RPC-вызова процедуры в Oracle. При обращении к этой таблице из приложения установившего соединение с базой ASE через OpenClient все отрабатывает нормально, значение из таблицы выбирается (т.е. вызов процедуры проходит удачно). Тот же самый вызов при установлении связи через ODBC (или .NET provider) не выдавая никаких ошибок ничего не возвращает.

Может есть какие-то опции отвечающие за поведение при различных способах соединения с базой которыми можно управлять уже после установления соединения?
...
Рейтинг: 0 / 0
Контекст драйвера доступа в ASE
    #34124253
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коннечно есть. Это опции разнообразные в соединении. Но только как они в данном случае могут "гадить" я что-то не могу понять.
...
Рейтинг: 0 / 0
Контекст драйвера доступа в ASE
    #34125703
Andyn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Немножко подробностей. :)

Так как прокси-таблица в ASE - отображение процедуры (доступ к Oracle через DirectConnect), то при обращении к ней нужно указывать все параметры - перечислив все столбцы в WHERE, часть из которых будет = NULL, часть заполнена фактическими значениями. Есть подозрение, что как раз на NULL-ах и проявляется это различие в способе доступа.

Т.е. запрос вида:

select *
from MyProxyTable
where col1 = @param1
and col2 = @param2
and col3 = @param3

при param1 = NULL, param2 = 'some text', param3 = NULL

фактически становится таким:

select *
from MyProxyTable
where col1 = NULL
and col2 = 'some text'
and col3 = NULL

и для OpenClient это нормально отрабатывает, а для ODBC - нет.
...
Рейтинг: 0 / 0
Контекст драйвера доступа в ASE
    #34126431
Фотография Dmitry.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно первой коммандой запустить

Код: plaintext
set ansinull {on | off}

или пользовать стандарт:

Код: plaintext
where col1 is NULL
...
Рейтинг: 0 / 0
Контекст драйвера доступа в ASE
    #34126835
Andyn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пробовали ANSINULL - драйвере ODBC от 15 версии есть такая опция в настройках. Не помогает.

Использовать is null вместо = null - теряется преимущество от использования параметров - данный запрос на прокси-таблицу выполняется внутри процедуры.
...
Рейтинг: 0 / 0
Контекст драйвера доступа в ASE
    #34127058
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndynИспользовать is null вместо = null - теряется преимущество от использования параметров - данный запрос на прокси-таблицу выполняется внутри процедуры.
Попробуйте isnull(field,dummy)=dummy, где dummy - такое значение, которого заведомо не бывает в field.
Разумеется, если последствия применения данного метода не напрягают.
...
Рейтинг: 0 / 0
Контекст драйвера доступа в ASE
    #34132068
Andyn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вобщем, если кому интересно.

После многочисленных экспериментов с различными способами доступа к БД проблема решена. Дело было в опции ANSINULL плюс внесены некоторые исправления в логику процедур.

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


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