|
Разные exception в execute procedure при разных клиентских библиотеках FB2.5.7 и FB3.0.1
|
|||
---|---|---|---|
#18+
Господа! В хранимой процедуре без возвращаемых значений, которая успешно (в рамках своей логики, либо отрабатывает молча, либо возвращает exception) вызывается так в IBExpert: execute procedure advance2(1000, 500); есть вызов исключения exception wrong_parameters 'Такая сумма аванса недоступна сотруднику, уменьшите сумму!'; Есть компьютер с приложением (не IBExpert), где клиентская библиотека от FB2.5, и тогда работает правильно. А если вызывает исключение, которое ловиться программой, то отображается именно такой текст. Сервер всегда 2.5.7. Если использовать библиотеку от FB3.0.1, то в случае правильных параметров, которые не предполагают исключения, все работает. Если ввести параметры, на которые мы должны реагировать вышеуказанным исключением, то в клиент придёт исключение "Attempt to execute an unprepared dynamic SQL statement", а не то, что указывали мы. Мы использует IBSQL (не IBQuery), отладка показывает, что исключение такое уже на уровне вызова isc_dsql_execute2: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
Отмечу, что хранимая процедура с возвращаемыми значениями, вызываемая через "select * from ..." корректно возвращает исключение при любой клиентском библиотеке: и FB2.5, и FB3.0.1. Как нам получить "наше" исключение в примере выше? Хотелось бы иметь одну клиентскую библиотеку и соединятся с СУБД разных версий. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2016, 12:43 |
|
Разные exception в execute procedure при разных клиентских библиотеках FB2.5.7 и FB3.0.1
|
|||
---|---|---|---|
#18+
grgr...Хотелось бы иметь одну клиентскую библиотеку... Гемор в перспективе, неизбежный. Лет 10 назад я в каталог своих приложений стал добавлять подпапку \fbSupport. Там лежит клиент и разные мелкие полезняшки, вроде IBEScript.dll, образов bat-файлов для бэкап-рестора-старта-запуска и проч). Приложение при запуске настраивает нужные переменные окружения, и всё. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2016, 12:55 |
|
Разные exception в execute procedure при разных клиентских библиотеках FB2.5.7 и FB3.0.1
|
|||
---|---|---|---|
#18+
grgrотладка показывает, что исключение такое уже на уровне вызова isc_dsql_execute2: Это уже сто лет известный баг в IBX, созданный для обхода другого бага в древнем Interbase. Ни то ни другое к Firebird отношения не имеет. Выкиньте к чёртовой матери процитированный код. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2016, 13:31 |
|
Разные exception в execute procedure при разных клиентских библиотеках FB2.5.7 и FB3.0.1
|
|||
---|---|---|---|
#18+
grgr, очень похоже на вот это http://www.ibase.ru/ibstp/ рекомендую сравнить код с кодом других компонентов (firedac, ibx2, и т.д.) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2016, 13:43 |
|
Разные exception в execute procedure при разных клиентских библиотеках FB2.5.7 и FB3.0.1
|
|||
---|---|---|---|
#18+
kdv, Спасибо, вы правы, это явно имеет отношение к моему случаю. Я наталкивался на эту статью сто лет назад, но сейчас, при поиске (гуглении и т.п.), её почему-то мне не показывает. Однако, я все еще попробую разобраться, почему с клиентской библиотекой fb2.5 все норм, а с fb3.0 - нет. Или, как сказал Товарищ младший сержант - это принципиальная ситуация и никто не обещает, что новые клиентские библиотеки будут нормально работать со старыми версиями СУБД, так? p.s.: Господа, а есть простой список поломанного в fb3.0 относительно fb2.5? Не именно новые возможности, а старые, типа длинна имени переменных (declare variables) в процедурах не более 31 символа, обязательного именования столбцов в курсоре, даже когда я обращаюсь к ним не по имени (то бишь cast() теперь нужно сопровождать алиасом, но вы знаете, конечно), обязательно приведение к одному типу в case (многие ситуации, разрешаемые в 2.5 по умолчанию, теперь требуют явного указания (явного cast()) ) и т.п. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2016, 14:22 |
|
Разные exception в execute procedure при разных клиентских библиотеках FB2.5.7 и FB3.0.1
|
|||
---|---|---|---|
#18+
grgrИли, как сказал Товарищ младший сержант - это принципиальная ситуация и никто не обещает, что новые клиентские библиотеки будут нормально работать со старыми версиями СУБД, так? Никто не обещает, что новые библиотеки будут иметь в себе те же баги, что и старые. Правильное поведение сохраняется. Если ты закладываешься на баги - ССЗБ. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2016, 14:34 |
|
Разные exception в execute procedure при разных клиентских библиотеках FB2.5.7 и FB3.0.1
|
|||
---|---|---|---|
#18+
Все заработало. Действительно, возвращался exception, затем, так как код вот такой странный, то вызывалась процедура еще раз, получался exception другой (Attempt to...). Исправление кода помогло. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2016, 15:40 |
|
Разные exception в execute procedure при разных клиентских библиотеках FB2.5.7 и FB3.0.1
|
|||
---|---|---|---|
#18+
grgr а есть простой список поломанного в fb3.0 относительно fb2.5? этот список, как и всегда, находится в дистрибутиве Firebird, /doc/README.incompatibilities.txt ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2016, 16:40 |
|
|
start [/forum/topic.php?fid=40&fpage=50&tid=1561800]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
36ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
others: | 274ms |
total: | 404ms |
0 / 0 |