|
|
|
функции на ASA 9.0
|
|||
|---|---|---|---|
|
#18+
Есть вопрос по поводу функций в АСА (поиск по форуму не помог): проблема заключается в том, что после создания функции на чистой БД попытка сделать селект из нее заканчивается ошибкой, причем зачастую оч. непонятной по типу отсутствия поля в конечной выборке и т.д. Теперь самое интересное: захожу в функцию ставлю в конце пробел или прросто добавляю чистую строку... компиляю процедуру и... все работает без проблем... Т.е. текст и логика функции не меняется... Куда копать??? Что-то подсказывает, что проблема может быть в оптимизаторе, но как с этим бороться... Данная проблема периодически появляется в разных процедурах, но от чего зависит пока не понятно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2008, 21:16 |
|
||
|
функции на ASA 9.0
|
|||
|---|---|---|---|
|
#18+
Текст такой функции показать слабо? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2008, 22:06 |
|
||
|
функции на ASA 9.0
|
|||
|---|---|---|---|
|
#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. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. Ругалась на то, что нет поля Summ... Хотя после того, как я тупо через централ добавил пустую строку, все заработало без проблем... Причем, повторюсь, такое периодически возникает на разных процедурах/функциях... Помогает просто добавление пробела, пустой строки и перекомпиляции (пересоздание) функции... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2008, 08:28 |
|
||
|
функции на ASA 9.0
|
|||
|---|---|---|---|
|
#18+
О... А форматирование текста функции не прокатило исчезло ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2008, 08:29 |
|
||
|
функции на ASA 9.0
|
|||
|---|---|---|---|
|
#18+
что значит "на чистой БД" ? как ты эту чистую БД создаешь? как ты вызываешь эту процедуру? какую именно ошибку дает сервер? нет поля Summ где? почему пользуешь #RetTable а не local temporary table ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2008, 12:07 |
|
||
|
функции на ASA 9.0
|
|||
|---|---|---|---|
|
#18+
Чистую БД создаю как угодно - хоть через скрипт Create Database, хоть через Централ на Create new database. Под "чистая" имеется ввиду только что созданная, на которой еще никаких операций не производилось, никаких объектов не создавалось не дропалось... Как еще объяснить... По-моему термин "чистая БД" уже давно в обиходе... Вызов как угодно (хоть через Call хоть через Select) приводит к одному результату: не могу найти поле... При этом чистый запрос процедуры в Interactive SQL, партизане и т.п. и т.д. нормально возвращает результат... "чистый запрос процедуры" - это тело процедуры скопированное в соответствующее приложение и выполненый... Возвращает запрос ошибку по типу Column "XXX" not found. пользую #RetTable а не local temporary table потому что так привык... Есть принципиальная разница для текущей проблемы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2008, 13:11 |
|
||
|
функции на ASA 9.0
|
|||
|---|---|---|---|
|
#18+
PaymentDocuments и Owner.frx__GetCardOperations GCO в чистой БД создаются после вашей функции "Owner"."frx_cl_InfoReport_Tab_PayDoc"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2008, 13:42 |
|
||
|
функции на ASA 9.0
|
|||
|---|---|---|---|
|
#18+
Какая версия сервера (с точностью до билда)? Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2008, 13:43 |
|
||
|
функции на ASA 9.0
|
|||
|---|---|---|---|
|
#18+
PaymentDocuments и Owner.frx__GetCardOperations GCO Создаются в скрипте до данной процедуры. Версия: 9.0.2.3402 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2008, 13:51 |
|
||
|
функции на ASA 9.0
|
|||
|---|---|---|---|
|
#18+
ну если база чистая то в ней нет таблиц. было-бы логично выдавать ошибку ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2008, 13:53 |
|
||
|
функции на ASA 9.0
|
|||
|---|---|---|---|
|
#18+
просто предположение поле Summ в CREATE TABLE стоит после строкового комментария. как-бы у вас в первоначальном скрипте не стояли "неправильные" переводы кареток... тогда поле Сумм воспринимается как закоменченое... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2008, 14:02 |
|
||
|
функции на ASA 9.0
|
|||
|---|---|---|---|
|
#18+
Прошу всех еще раз обратить внимание на следующее: 1. скопированный текст тела процедуры корректно отрабатывает с возвращением всего необходимого. 2. внесение в тело процедуры изменения в виде пробела/чистой строки и производства alter приводит к тому, что процедура начинает работать корректно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2008, 14:10 |
|
||
|
функции на ASA 9.0
|
|||
|---|---|---|---|
|
#18+
Специально для Dmitry :) : на только что созданную базу (Create Database) накатывается скрипт создания всех объектов БД (таблиц, функций, процедур, вьюх, тригеров и т.д.)... Скрипт отрабатывает безошибочно. И только после этого производится попытка запустить процедуру... Прошу так же учитывать мой предыдущий пост с цлью концентрации на сути проблемы... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2008, 14:12 |
|
||
|
функции на ASA 9.0
|
|||
|---|---|---|---|
|
#18+
есть информация какая именно комманда в процедуре приводит к ошибке? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2008, 15:32 |
|
||
|
функции на ASA 9.0
|
|||
|---|---|---|---|
|
#18+
В том-то вся и проблема, что процедура корректна... Для работы процедуры достаточно просто добавить Enter перед END и перекомпилить процедуру... Причем это происходит периодически на разных процедурах... Зависимостей в возникновении бага не обнаружил... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2008, 15:43 |
|
||
|
функции на ASA 9.0
|
|||
|---|---|---|---|
|
#18+
Mikle83В том-то вся и проблема, что процедура корректна... Для работы процедуры достаточно просто добавить Enter перед END и перекомпилить процедуру... А ты пробовал открывать скрипт в режиме hexview и смотреть какие там переводы строки? Dmitry задавал правильный вопрос на который ты не ответил. Смешение \n и \r\n концов строк в исходном скрипте может приводить к недовыполненому скрипту без каких-либо сообщений об ошибках на момент выполнения скрипта. Я такое видел неоднократно на ASE, в SA я с этим не сталкивался, но чем черт не шутит. К тому же вставка пустой строки явно показывает на проблемы с чтением исходного скрипта. Прогони скрипт в дебагере, посмотри на какой конкретно строке он падает. Потом запусти этот скрипт еще раз и когда дебагер остановится перед проблемной строкой, запусти дб-эксплорер в дебагере и покопайся в таблицах, хотя бы просто попытайся выполнить проблемную команду "как есть", она ругнется. Потом упрощай эту команду пока не перестанет ругаться. Будет шанс узнать о проблеме больше. И не забывай ставить точку с запятой после END. Полезно будет... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2008, 18:13 |
|
||
|
функции на ASA 9.0
|
|||
|---|---|---|---|
|
#18+
я сталкивался с таким, выгружая бд для мобилинка. попробуй описать в процедуре RESULT ( result-column, ... ) мне помогло :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2008, 19:39 |
|
||
|
функции на ASA 9.0
|
|||
|---|---|---|---|
|
#18+
Марселья сталкивался с таким, выгружая бд для мобилинка. попробуй описать в процедуре RESULT ( result-column, ... ) мне помогло :) Мы с таким сталкивались много раз, от EBFа к EBFу не лечилось. Лечится простым пересозданием процедуры/функции (что точно помогает!) или косметическим изменением и сохранением (что помогало не всегда). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2008, 00:59 |
|
||
|
функции на ASA 9.0
|
|||
|---|---|---|---|
|
#18+
White Owl, не могу понять, как может конец строки помочь??? Ведь вставка !!!!пробела!!!! в любое место приводит процедуру в нормальное состояние... Надо попробовать с RESULT ( result-column, ... )... Но проблема в том, что данный баг проявляется крайне не стабильно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2008, 08:26 |
|
||
|
функции на ASA 9.0
|
|||
|---|---|---|---|
|
#18+
Sybase Central для АСА автоматом заменяет все переводы кареток на правильные. dbisql, который обычно используется для создания БД, компилит процедуры "как есть". чтобы выявить проблему предлагаю сделать следующее: - взять базу с проблемной процедурой. - взять sql скрипт с помощью которого сосдавалась база - с помощью редактора который не делает никаких авто-замен (например FAR) оставить в этом скрипте только проблемную процедуру НЕ ДЕЛАТЬ никаких копи-паст!!! только удаление ненужного текста!!! - заменить в новом сктипте create на alter - запускать его только из dbisql, комманда load (если правильно помню) если после этого запуска проблема остается - это и есть наши исходные данные. процедуру аттачем сюда, и четко как звучит ошибка! тоже сюда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2008, 09:40 |
|
||
|
функции на ASA 9.0
|
|||
|---|---|---|---|
|
#18+
Совершить действия описанные в предыдущем посте не представляется возможным по ряду причин... Вопрос ко всем: возможно ли осуществить на АСА пересохранение всех процедур... Есть ли какие-нить штатные средства для реализации этой задачи? Т.е. хочется сделать чтонить типа EXEC RELOAD_ALL() и получить пересохранение всех процедур на базе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2008, 16:10 |
|
||
|
функции на ASA 9.0
|
|||
|---|---|---|---|
|
#18+
Mikle83 пишет: > Вопрос ко всем: возможно ли осуществить на АСА пересохранение всех > процедур... Есть ли какие-нить штатные средства для реализации этой задачи? Нет. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2008, 16:32 |
|
||
|
функции на ASA 9.0
|
|||
|---|---|---|---|
|
#18+
Mikle83White Owl, не могу понять, как может конец строки помочь???Элементарно. Скрипт читается парсером. Парсер разбирает скрипт на отдельные слова (токены) и пытается разобрать что является настоящими командами которые надо выполнить, а что является мусором который был прислан на сервер кривым клиентом. Мешанина из \n и \r\n может убедить парсер что все что идет после первого "неправильного" перевода строки является мусором который надо игнорировать. Потом парсер встречает "правильный" перевод строки и дальше продолжает разбирать скрипт. В итоге, кусок скрипта будет просто выкинут из работы. Теперь понял? Mikle83Ведь вставка !!!!пробела!!!! в любое место приводит процедуру в нормальное состояние...Да, это возможно. И проявление бага будет действительно не стабильным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2008, 18:16 |
|
||
|
функции на ASA 9.0
|
|||
|---|---|---|---|
|
#18+
Можно конечно сбацать "свой" EXEC RELOAD_ALL() который вытащит нужное из SYSPROCEDURE, наведет там порядок с \n и \r\n и перезальет в базу Или проще взять кусок изначального скрипта создания процедур в базе, навести там порядок и перезалить в каждой существующей базе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2008, 19:05 |
|
||
|
функции на ASA 9.0
|
|||
|---|---|---|---|
|
#18+
WhiteOwl, спасибо за объяснение. Действительно такая ситуация быть может... Надо продебажить, как предлагал Dmitry. Но вот смущает такой факт: избавился пока от проблемы следующим образом: каждая процедура в скрипте пересоздается по 3 раз... Т.е. делается Create Procedure. потом Drop Procedure и снова Create... Достигается это путем выполнения одного и того же скрипта несколько раз на одной базе... После этого все нормально. Процедура пашет... antand, можно конечно взять и перезалить... но масштабы компании скажем так не позволяют этого сделать... ибо счет конечных пользователей в эксплуатации (а кадая точка имеет свою БД) идет на тысячи... поэтому пытаемся решить проблему на стадии разработки, чтобы она на эксплуатации не вылезла вдруг ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2008, 21:44 |
|
||
|
функции на ASA 9.0
|
|||
|---|---|---|---|
|
#18+
"Хренотень - тень отбрасывемая хреном на другие растения" Действительно, какой-то глубинный баг, значит причина может быть в чем угодно. Вставлю своих пять копеек. У этой ХП, в определении какой диалект стоит? Сама по себе процедура - TransactSQL, но хз, может в централе она видна как Watcom-SQL и из-за этого его подклинивает? Why CORBA is DEAD? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2008, 22:48 |
|
||
|
функции на ASA 9.0
|
|||
|---|---|---|---|
|
#18+
не скажу что это поможет и не уверен что еще работает писал много лет назад когда АСА 5.0 только появился http://dm.char.com.ua/soft/reload.rar там есть скрипт RlProc.sql по идее он генерит один большой файл со всеми процедурами... ЗЫ: когда-то использовали для деплоя всех процедур. можно было-бы использовать reload.sql который генерится через unload вырезав все лишнее и обработав хорошим редактором. но надо-бы убедиться что проблема именно в этом. а то труд будет напрасным :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2008, 23:09 |
|
||
|
функции на ASA 9.0
|
|||
|---|---|---|---|
|
#18+
опишу свои наблюдения попробуй в ISQL на новой БД сделать 1 CALL "Owner"."frx_cl_InfoReport_Tab_PayDoc"() 2 select * from "Owner"."frx_cl_InfoReport_Tab_PayDoc"() первое должно отработать, второе - нет идем в SC, находим процедуру "Owner"."frx_cl_InfoReport_Tab_PayDoc", через контекстное меню вызывай свойства, смотри закладку Parameters наверняка выходных параметров нет, есть только expression если так - опиши параметры White OwlИ не забывай ставить точку с запятой после END. Полезно будет... не всегда если стоит параметр PRESERVE_SOURCE_FORMAT, и ф-ция (тригер и пр.) создается через execute immediate, то при выгрузке БД в reload.sql в комментарии где хранится неформатированный текст, точка с запятой не уберется, и придется исправлять все руками, иначе будет на нее ругаться case открывал для asa9, ага, исправили, но только в sa10, чудаки ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2008, 00:16 |
|
||
|
функции на ASA 9.0
|
|||
|---|---|---|---|
|
#18+
Марсель, навел меня на мысль... вообщем при очередной заморочке с базой удалось отловить одну процедуру с выше описанной проблемой... И обнаружилась следующая хренька: текст заспроса процедуры выполненый отдельно вернул датасет в котором полей больше, чем на вкладке Parameters параметров с ParameterType = Result... Как-то можно перекомпилять у процедуры схему данных? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2008, 08:54 |
|
||
|
функции на ASA 9.0
|
|||
|---|---|---|---|
|
#18+
Масштабы компании конечно могут быть большие и конечно проблему надо убить в зародыше, на стадии разработки. Но написать скрипт перезаливки проблем вроде нет, если только есть проблема в распространении и запуске этого скрипта у всех. Или базы отпущены в свободное плавание и между собой вообще связи не имеют. Обновление ведь какое-то предусмотрено? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2008, 13:11 |
|
||
|
функции на ASA 9.0
|
|||
|---|---|---|---|
|
#18+
antand, очень надеюсь, что не придется данную проблему решать на стадии эксплуатации... Резервное решение в виде раскручивания скрипта несколько раз на одной БД... но это как-то криво... Поэтоу сейчас все силы брошены на решение проблемы в зародыше... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2008, 14:04 |
|
||
|
функции на ASA 9.0
|
|||
|---|---|---|---|
|
#18+
Да не... Все понятно и поддерживаю. Я просто подумал, что у Вас уже куча точек запущена. И к тому же Вы все время спрашиваете "как бы все перекомпилить". Раз Вы отловили одну из процедур, то предоставьте нам для разбора исходный файл заливки этой процедуры. Именно файл-скрипт, который был запущен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2008, 14:17 |
|
||
|
|

start [/forum/topic.php?all=1&fid=55&tid=2011338]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
47ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
65ms |
get tp. blocked users: |
2ms |
| others: | 11ms |
| total: | 170ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...