|
Странное поведение EXEC_SQL в Forms 11G
|
|||
---|---|---|---|
#18+
Пользователь пожаловался, что не все строки данных отображаются - должно быть 4 строки, а выводятся только 3 (кроме первой). Полез в форму разбираться. Там код следующего рода: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
Решил, что как-то не так отрабатывает EXEC_SQL.FETCH_ROWS (подумал, что может сразу после EXEC_SQL.EXECUTE уже выбирается первая строка) и вместо цикла while сделал: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Все строки появились. Но это было вчера. А сегодня (на ночь и Forms Builder и Weblogic оставались запущенными, если это важно) форма стала вылетать со строки Код: plsql 1.
в блок EXCEPTION с ошибкой, что ничего не выбрано (а что вообще может быть выбрано, если там только присвоение переменной текста запроса?). Закрыл Forms Builder , перестартовал Weblogic Server , снова запустил форму и... появилась пустая строка впереди. Вернулся снова к циклу while - всё стало работать как надо. Скажите, пожалуйста, если кто знает, с чем подобное поведение может быть связано и как такую ситуацию предупредить? От чего может зависеть то, как EXEC_SQL.FETCH_ROWS выбирает строки? Может кто знает в каких ещё местах стоит ждать подобного подвоха? Если бы было что-то связано с локальной машиной, тогда бы при перекомпилировании формы на сервере у пользователя было бы всё хорошо. Но в том то и дело, что и при запуске локально и при запуске с сервера программа ведёт себя одинаково. Forms [64-битное] Версия 11.1.2.2.0 Oracle9i Enterprise Edition Release 9.2.0.8.0 Не связано ли это с тем, что версия Oracle старая? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2014, 10:43 |
|
Странное поведение EXEC_SQL в Forms 11G
|
|||
---|---|---|---|
#18+
Duddha, Зачем тут EXEC_SQL? не проще ли сделать блок b_otp_prop базовым и менять query datasource name? По теме: в 11-ых Forms-ах есть такой баг First Row Not Fetched Using EXEC_SQL.EXECUTE - может твой случай. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2014, 11:56 |
|
Странное поведение EXEC_SQL в Forms 11G
|
|||
---|---|---|---|
#18+
Note 1626368.1, Вопрос "зачем" пока не обсуждается - сопровождаю переданную мне форму. Сам уже понимаю, что без внесения изменений не обойдётся. Пока только надо добиться работоспособности формы с внесенными изменениями. По поводу ссылки - нет доступа к support.oracle.com (поддержка просрочена, пока, к сожалению, не продлевают). Можешь скинуть, что там пишут? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2014, 12:50 |
|
Странное поведение EXEC_SQL в Forms 11G
|
|||
---|---|---|---|
#18+
DuddhaМожешь скинуть, что там пишут?Для этого надо быть не таким "скрытм" ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2014, 17:36 |
|
Странное поведение EXEC_SQL в Forms 11G
|
|||
---|---|---|---|
#18+
Duddha, First Row Not Fetched Using EXEC_SQL.EXECUTE (Doc ID 1626368.1) Applies to: Oracle Forms - Version 11.1.1.6.0 to 11.1.2.2.0 [Release 11g] Information in this document applies to any platform. Symptoms When obtaining a set of records with exec_sql.execute the first row is silently not provided (the resultset misses a row). When using exec_sql.execute_and_fetch then things are fine (all rows are present in the recordset, the same cursor being used in both cases) Changes Upgraded Forms from Release 10gR2 to 11gR1 versions 11.1.1.6+ or to 11gR2 (11.1.2.0 to 11.1.2.2). Cause This is caused by Bug 16677514 EXEC_SQL.EXECUTE FETCH THE FIRST ROW that is announced fixed in future Forms release 12.1 This bug is caused by the newline character in front of the SELECT keyword in the SQL statement, preventing from treating it as a SELECT query. The fix of bug 11660455 included in 11.1.2.x and 11.1.1.6+ decided upon various cases where a statement with the word SELECT was to be treated as a SELECT query but was not checking for newline. Solution Either: - Remove the newline character in front of the SELECT keyword in the SQL statement or - If available for your platform, apply Patch 16677514. If not, please contact Oracle Support. обещают "пофиксить" в 12ой, ждите :) ..а вообще конечно лучше перепешите без exec_sql / ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2014, 07:28 |
|
Странное поведение EXEC_SQL в Forms 11G
|
|||
---|---|---|---|
#18+
Note 1626368.1 , Прошу прощения - не заметил галочки о скрытии e-mail ;) mRdUKE , Спасибо за статью. Собирался попробовать с EXECUTE_AND_FETCH , да всё равно вряд ли бы догадался, что дело в переносе строки. Изначально запрос был записан так: Код: plsql 1. 2. 3.
Проверил - при таком варианте EXECUTE пропускает первую строку. Если SELECT написать сразу после открывающей кавычки, тогда всё в порядке. EXECUTE_AND_FETCH отрабатывает нормально в обоих случаях. Всем спасибо. P.S. 12-ку ждать не буду, перепишу без EXEC_SQL, но там, как выяснилось, ещё много мест, где стоит переписать :) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2014, 09:06 |
|
Странное поведение EXEC_SQL в Forms 11G
|
|||
---|---|---|---|
#18+
mRdUKE , Отдельное спасибо за файлик ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2014, 09:09 |
|
Странное поведение EXEC_SQL в Forms 11G
|
|||
---|---|---|---|
#18+
mRdUKE , Можно попросить тебя об одолжении? Передал админу патч, но там readme прописано авторEnsure the patch for bug 17930316 of Linux (64-Bit ) has already been applied before you proceed with the current patch У нас этого патча нет. Можешь прислать его, если не сложно? Заранее спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2014, 09:42 |
|
Странное поведение EXEC_SQL в Forms 11G
|
|||
---|---|---|---|
#18+
Duddha, Пожалуйста. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2014, 15:21 |
|
|
start [/forum/topic.php?fid=51&msg=38791402&tid=1878124]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
158ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 272ms |
0 / 0 |