|
Ошибка [HY105] при втором вызове процедуры из dot.net
|
|||
---|---|---|---|
#18+
Доброго времени суток, уважаемые информиксоводы! Возникли трудности, буду признателен за подсказку - в каком направлении копать. Проблема следующая: 1. IDS 11.10.TC1DE.win2003 (Developer edition); 2. простая тестовая процедурка с одним in и одним out параметрами; 3. вызывающий процедуру код в dot.net приложении, использующий родной драйвер IBM.Data.Informix; 4. При первом вызове процедура отрабатывает корректно, возвращая правильное значение, любой последующий запуск процедуры (с предварительной инициализацией in параметра новым значением) стабильно вызывает ошибку HY105 (Invalid parameter type.). PS: Сильно не пинайте, в факе и поиском ничего похожего не нашел. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2008, 11:12 |
|
Ошибка [HY105] при втором вызове процедуры из dot.net
|
|||
---|---|---|---|
#18+
Код процедуры: Код: plaintext 1. 2. 3. 4. 5. 6. 7.
Вызывающий из .NET: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2008, 11:16 |
|
Ошибка [HY105] при втором вызове процедуры из dot.net
|
|||
---|---|---|---|
#18+
да... советов море, даже не знаю который выбрать :) Тогда такой вопрос: а вообще кто нибудь пишет в связке Informix + dot.net + native dot.net provider? По сабжу: удалось найти решение: после каждого вызова команды осуществляется удаление всех параметров, их повторное создание и инициализация... в этом случае вроде бы работает... ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2008, 18:10 |
|
Ошибка [HY105] при втором вызове процедуры из dot.net
|
|||
---|---|---|---|
#18+
я никогда не пользовался CommandType.StoredProcedure и ParameterDirection.ReturnValue-параметрами, возможно дело в этом. я делал так, правда это через odbc мост Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2008, 18:29 |
|
Ошибка [HY105] при втором вызове процедуры из dot.net
|
|||
---|---|---|---|
#18+
Журавлев Денис... я делал так, правда это через odbc мост... Спасибо, перейти на ODBC тоже вариант, согласен... Но как-то странно использовать ODBC, если существует родной провайдер для dot.net. Для себя решил - еще один подобный момент со стороны провайдера dot.net и буду пробовать перевести все на ODBC... ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2008, 15:27 |
|
Ошибка [HY105] при втором вызове процедуры из dot.net
|
|||
---|---|---|---|
#18+
DimmON33 Журавлев Денис... я делал так, правда это через odbc мост... Спасибо, перейти на ODBC тоже вариант, согласен... Но как-то странно использовать ODBC, если существует родной провайдер для dot.net. Для себя решил - еще один подобный момент со стороны провайдера dot.net и буду пробовать перевести все на ODBC...нет, я не предлагал переходить на odbc. Я в 2004 году написал код, его кусочек я показал выше, некоторое время назад в той организации перешли на родной dot.net провайдер, и мой код переписан на ifx* компоненты, у них все успешно работает. Я показал пример как я бы обращался к процедурам, т.е. как к обычному запросу через execute procedure. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2008, 15:47 |
|
Ошибка [HY105] при втором вызове процедуры из dot.net
|
|||
---|---|---|---|
#18+
Денис, я попробовал переработать тестовый код под работу с другим типом команды по Вашему совету: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32.
в результате - при повторном вызове по прежнему сервер выдает ошибку, правда уже другую: [07001] Wrong number of parameters Для интереса - поставил еще один сервер на другую машину - результат тот же! :) может быть, это ограничение Developer Edition версии сервера? Вроде: вызов команды работает только один раз... ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2008, 17:04 |
|
Ошибка [HY105] при втором вызове процедуры из dot.net
|
|||
---|---|---|---|
#18+
Я использую IBM.Data.Informix. Написала вот такое, работает без ошибок, возвращает 22. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2008, 09:12 |
|
Ошибка [HY105] при втором вызове процедуры из dot.net
|
|||
---|---|---|---|
#18+
ТанЯ использую IBM.Data.Informix. Написала вот такое, работает без ошибок, возвращает 22. Так и у меня работает. Проблема начинается, если между вызовами команды закрывать соединение. Попробуйте запустить вот так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2008, 10:39 |
|
Ошибка [HY105] при втором вызове процедуры из dot.net
|
|||
---|---|---|---|
#18+
DimmON33 ТанЯ использую IBM.Data.Informix. Написала вот такое, работает без ошибок, возвращает 22. Так и у меня работает. Проблема начинается, если между вызовами команды закрывать соединение. Попробуйте запустить вот так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
Так у меня тоже ошибка. А вот так нету Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2008, 11:20 |
|
Ошибка [HY105] при втором вызове процедуры из dot.net
|
|||
---|---|---|---|
#18+
To Тан: большое спасибо! Вызов Cmd.Prepare(); действительно решает описанные проблемы. Осталось только понять причины происходящего: 1. вызов Cmd.Prepare(); обязателен при выполнении любой команды в Informix? 2. это баг провайдера/сервера, который обходят таким вот хитрым образом? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2008, 11:38 |
|
Ошибка [HY105] при втором вызове процедуры из dot.net
|
|||
---|---|---|---|
#18+
DimmON33To Тан: большое спасибо! Вызов Cmd.Prepare(); действительно решает описанные проблемы. Осталось только понять причины происходящего: 1. вызов Cmd.Prepare(); обязателен при выполнении любой команды в Informix? 2. это баг провайдера/сервера, который обходят таким вот хитрым образом?у вас аналогичный код на других провайдерах как работает? например mssql, или odbc? Если иначе то надо писать баг репорт в ibm. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2008, 11:44 |
|
Ошибка [HY105] при втором вызове процедуры из dot.net
|
|||
---|---|---|---|
#18+
Я думаю, происходит вот что: Вы открываете соединение. Создаете на сервере объект (курсор), через который выбираете данные. Закрываете соединение (объект на сервере удаляется). Открываете другое соединение. Пытаетесь выбрать данные через объект, которого нет. Чтобы работало, надо объект этот заново на сервере создать. Prepare создает. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2008, 11:48 |
|
Ошибка [HY105] при втором вызове процедуры из dot.net
|
|||
---|---|---|---|
#18+
Другие провайдеры я не пробовал использовать. Надо будет попробовать возможно это действительно баг native провайдера. Это для меня первая работа под informix, родной сервер - MS SQL, там таких проблем никогда не возникало. Еще раз спасибо... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2008, 11:49 |
|
Ошибка [HY105] при втором вызове процедуры из dot.net
|
|||
---|---|---|---|
#18+
Тан Prepare создает. ну а при первом вызове кто describe делает? Cmd.CommandText = ? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2008, 12:01 |
|
Ошибка [HY105] при втором вызове процедуры из dot.net
|
|||
---|---|---|---|
#18+
Журавлев Денис Тан Prepare создает. ну а при первом вызове кто describe делает? Cmd.CommandText = ? при первом вызове Cmd.ExecuteReader() делает. после этого Cmd становится Prepared и при следующем вызове Prepare не делается. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2008, 12:08 |
|
Ошибка [HY105] при втором вызове процедуры из dot.net
|
|||
---|---|---|---|
#18+
Тан Журавлев Денис Тан Prepare создает. ну а при первом вызове кто describe делает? Cmd.CommandText = ? при первом вызове Cmd.ExecuteReader() делает. после этого Cmd становится Prepared и при следующем вызове Prepare не делается. rdm.Close(); и тем боллее IfxConn.Close(); должны вызывать unPrepare ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2008, 14:13 |
|
Ошибка [HY105] при втором вызове процедуры из dot.net
|
|||
---|---|---|---|
#18+
Журавлев Денис Тан Журавлев Денис Тан Prepare создает. ну а при первом вызове кто describe делает? Cmd.CommandText = ? при первом вызове Cmd.ExecuteReader() делает. после этого Cmd становится Prepared и при следующем вызове Prepare не делается. rdm.Close(); и тем боллее IfxConn.Close(); должны вызывать unPrepare думаю, rdm.Close() никак не должен вызывать unPrepare, иначе от Prepare никакой выгоды не будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2008, 15:33 |
|
|
start [/forum/topic.php?fid=44&msg=35581131&tid=1607984]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
214ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
others: | 332ms |
total: | 650ms |
0 / 0 |