|
|
|
функции на 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 |
|
||
|
|

start [/forum/topic.php?fid=55&fpage=45&tid=2011338]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
30ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
77ms |
get tp. blocked users: |
2ms |
| others: | 10ms |
| total: | 167ms |

| 0 / 0 |

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