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

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

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

Так как прокси-таблица в 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
14.11.2006, 11:55
    #34126431
Dmitry.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Контекст драйвера доступа в ASE
можно первой коммандой запустить

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

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

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

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

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

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


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