|
|
|
NHibernate. ORA-06502: PL/SQL: : буфер символьных строк слишком маленький...
|
|||
|---|---|---|---|
|
#18+
Добрый день, коллеги! Поимел проблему (см. тему). Экскурс в историю. Создаю приложение - вэб-надстройку над существующей автоматизированной системой. Та работает, как часы, несмотря на некоторые странности в серверной логике, созданной еще при Ленине. Я вынужден был использовать в проекте доступ к БД через одни и те же ХП, что и другие ее клиенты. Первая неприятность - неумение NHibernate работать с ораклом (в полной мере). Поэтому для некоторых хранимых функций приходилось получать ADO.NET-соединение из NHibernate-сессии и далее работать с ним. При этом, чтобы не изобретать велик, код методов доступа к ХФ тупо копировался из десктопной версии в вэбовскую. Без малейших изменений! Но в десктопной версии этот код отрабатывает безошибочно, а в вэбовской выдает упомянутую ошибку, напр., если функция возвращает строку. Подозрение только на NHibernate... Ниже привожу ХФ и метод доступа к ней. Код: 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. Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2010, 21:11 |
|
||
|
NHibernate. ORA-06502: PL/SQL: : буфер символьных строк слишком маленький...
|
|||
|---|---|---|---|
|
#18+
какой тип EMPLOYEES.ID_Employee%TYPE ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2010, 13:56 |
|
||
|
NHibernate. ORA-06502: PL/SQL: : буфер символьных строк слишком маленький...
|
|||
|---|---|---|---|
|
#18+
pationкакой тип EMPLOYEES.ID_Employee%TYPE ? NUMBER(8) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2010, 14:18 |
|
||
|
NHibernate. ORA-06502: PL/SQL: : буфер символьных строк слишком маленький...
|
|||
|---|---|---|---|
|
#18+
Может, попробовать у параметров свойство Size явно задать? Типа такого: Код: plaintext 1. 2. 3. Nhibernate здесь по-идее совсем не причем, только функции библиотеки ODP.NET используются... Странно почему это в старом коде работало, может конфигурация проекта другая? Кстати да, насчет вызова хранимок из Nhibernate... Там их можно вызывать, но только в частном случае (параметры хранимки должны идти в определенном порядке), а так - да, любую из старых хранимок не выполнишь без спуска на уровень ниже... И видимо это тоже связано с реализацией ODP.NET - вот цитата с forums.oracle.com: автор Just fyi, here's the reason the returnvalue needs to be first. ODP constructs an anonymous block to execute the stored procedure, along the lines of the following: begin :retval := myproc(:paramval);end; and the default for ODP is to bind by position, rather than by name. So the fist parameter added needs to be the return value. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2010, 10:55 |
|
||
|
NHibernate. ORA-06502: PL/SQL: : буфер символьных строк слишком маленький...
|
|||
|---|---|---|---|
|
#18+
barser oOutParam.Size = 50; Спасибо, коллега! А ведь помогло! Я так упыхался в попытках запустить эту процедуру на NHibernate, что ручонки опустились исправлять ошибку уже для ADO.NET. А работают они по-разному, возможно, т.к. используют разные провайдеры: OracleClient Oracle.DataAccess ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2010, 11:10 |
|
||
|
|

start [/forum/topic.php?fid=17&tid=1351121]: |
0ms |
get settings: |
5ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
26ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
23ms |
get tp. blocked users: |
1ms |
| others: | 223ms |
| total: | 301ms |

| 0 / 0 |
