Ошибка процедуры вызова VB6 Oracle - PullRequest
2 голосов
/ 22 января 2010

У нас есть запаздывающее приложение VB6, которое использует ODBC-соединение с БД Oracle 10g. Мы обновляем драйверы 11g на нашем SOE, и у некоторых частей приложения есть проблемы. Работает нормально с драйвером 9.2.

Клиент Oracle 10g / 11g не любит строчные вызовы. Это видно по тому факту, что успешные вызовы находятся в верхнем регистре, а неудавшиеся вызовы - в нижнем регистре. Дальнейшие тесты показали, что такие строки кода, как:

Set Qry = grdoEnterprise.CreateQuery("", " { CALL ep_admin_revoke_role( ?,?,?,? ) } ")

не удалось ... но удалось при изменении на

Set Qry = grdoEnterprise.CreateQuery("", " { CALL EP_ADMIN_REVOKE_ROLE( ?,?,?,? ) } ")

Сама ошибка не выдается, пока запрос не будет выполнен. Однако во время отладки сбой может быть обнаружен на этапе CreateQuery (), поскольку результирующий объект rdoQuery имеет 0 параметров (тогда как он должен иметь больше 0 - в данном случае 4).

Кто-нибудь сталкивался с этой проблемой с драйверами ODBC VB6 и Oracle 10g / 11g?

1 Ответ

0 голосов
/ 19 марта 2012

Да, Oracle слишком придирчив. Ваше решение изменить имя хранимой процедуры на верхний регистр на сто процентов правильно.

...