|
|
|
Выбивает БД
|
|||
|---|---|---|---|
|
#18+
думал, где это уместнее разместить здесь, или в базах... но поскольку проблема очевидно во взаимодействии VM с базой - разместил здесь. ситуация бредовая полностью! есть PB 9.01 7171 ASA 9.02 вызываю из приложения сторед процедуру на основании выполнения процедуры строю кросстаб всё зашибись до тех пор, пока не вызываю эту же процедуру второй раз. при повторном вызове процедуры из приложения ложица сервер БД. провел ряд экспериментов. вот что выяснил. из централа процедура запускаеца нормально неограниченное кол-во раз. из приложения можно запустить только один раз. но если после первого запуска процедуры из приложения, в этом же приложении этим же коннектом сделать какие-л изменения в посторонних таблицах - второй раз процедура запустица тоже нормально. то есть, нельзя запускать процедуру подряд. место вылета помечено красным. самое интересное, если я выношу очистку таблицы за пределы цикла - ничё не вылетает... всё работает... но мне нужно её чистить, чтобы был правильный резалт. собсно вот код процедуры: ALTER PROCEDURE "DBA"."sp_sales_production_by_month"(in ad_date_start timestamp,in ad_date_end timestamp,in al_production_id integer) result(res_year integer,res_month char(32), RETAIL_COUNT integer,RETAIL_SUMMA decimal(12,4), BUYERS_COUNT integer,BUYERS_SUMMA decimal(12,4)) BEGIN declare li_ys integer; // year_start declare li_ms integer; // month_start declare li_ye integer; // year_end declare li_me integer; // month_end declare ld_ds timestamp; // date_start for loop declare ld_de timestamp; // date_end for loop DECLARE LOCAL TEMPORARY TABLE tt_sales_month( l_year integer, l_month char(32), l_retail_count integer, l_retail_sum decimal(12,2), l_buyers_count integer, l_buyers_sum decimal(12,2) ); delete from tt_sales_month; set li_ys = year( ad_date_start ); set li_ms = month( ad_date_start ); set li_ye = year( ad_date_end ); set li_me = month( ad_date_end ) + 1; if li_me=13 then set li_me = 1; set li_ye = li_ye + 1; end if; set ad_date_start = datetime( string( li_ys ) || '-' || string( li_ms ) ); set ad_date_end = datetime( string( li_ye ) || '-' || string( li_me ) ); set ld_ds = ad_date_start; // Разбиваем по этапам while ld_ds < ad_date_end loop // Сдвигаем конец на месяц set li_ye = year( ld_ds ); set li_me = month( ld_ds ) + 1; if li_me=13 then set li_me = 1; set li_ye = li_ye + 1; end if; set ld_de = datetime( string( li_ye ) || '-' || string( li_me ) ); // Чистим верменную таблицу delete from dba.sales_total; // Расчитываем продажи за месяц call dba.sp_sales_all_reserv( ld_ds, ld_de ); insert into tt_sales_month(l_year, l_month, l_retail_count, l_retail_sum, l_buyers_count, l_buyers_sum ) select year( ld_ds ), (CASE month( ld_ds ) WHEN 1 then '01 - Январь' WHEN 2 then '02 - Февраль' WHEN 3 then '03 - Март' WHEN 4 then '04 - Апрель' WHEN 5 then '05 - Май' WHEN 6 then '06 - Июнь' WHEN 7 then '07 - Июль' WHEN 8 then '08 - Август' WHEN 9 then '09 - Сентябрь' WHEN 10 then '10 - Октябрь' WHEN 11 then '11 - Ноябрь' WHEN 12 then '12 - Декабрь' END), sum( dba.sales_total.retail_count ), sum( dba.sales_total.retail_summa ), sum( dba.sales_total.buyers_count ), sum( dba.sales_total.buyers_summa ) from dba.sales_total where sales_total.article_id = any( select article.article_id from dba.article where article.production_id = al_production_id); set ld_ds = ld_de; end loop; // Выводим результат select * from tt_sales_month; END вылетает всегда вот здесь: // Чистим верменную таблицу delete from dba.sales_total; где бы я ее не поставил - всегда вылетает! dba.sales_total - global temporaly table код специально максимально упростил, чтобы проще было разбираца, где именно глюк! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2007, 14:41 |
|
||
|
Выбивает БД
|
|||
|---|---|---|---|
|
#18+
Для начала поставить PB 9.03 последний билд ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2007, 14:50 |
|
||
|
Выбивает БД
|
|||
|---|---|---|---|
|
#18+
EstetsДля начала поставить PB 9.03 последний билд а как это может повлиять? я же не из среды запускаюсь... тут максимум проблема в машине... вопрос, как ее обойти? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2007, 15:03 |
|
||
|
Выбивает БД
|
|||
|---|---|---|---|
|
#18+
rashman EstetsДля начала поставить PB 9.03 последний билд а как это может повлиять? я же не из среды запускаюсь... тут максимум проблема в машине... вопрос, как ее обойти? но поскольку проблема очевидно во взаимодействии VM с базой а как может повлиять версия VM на взаимодействие VM с базой? да как угодно может повлиять. что такое "ложица сервер БД"? в чем это выражаеца? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2007, 15:21 |
|
||
|
Выбивает БД
|
|||
|---|---|---|---|
|
#18+
ЗоринАндрей что такое "ложица сервер БД"? в чем это выражаеца? ASA вылетает с системной табличкой "отправить уведомление разработчикам" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2007, 15:41 |
|
||
|
Выбивает БД
|
|||
|---|---|---|---|
|
#18+
А при выполнении делита точно нет никого, кто мог бы держать записи в dba.sales_total ? Другой коннект, этот же коннект но другое ДВ/ДС/прямой запрос/курсор/etc.? Ну еще можно попробовать решать бредовую проблему бредовым образом - вынести делит в отдельную процедуру и вызывать ее в нужном месте... ЗЫ Вообще было бы неплохо Аскруса на эту тему попытать, как прекрасно знающего и АСА и РВ, но он нынче крайне редкий гость... Попробую ему ссылочку скинуть, может заглянет... ------------ С уважением, IKAR IkarHomeCenter ........ Детский Дворик ........ ГавГав.Инфо Портал русскоязычной группы пользователей Sybase ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2007, 16:34 |
|
||
|
Выбивает БД
|
|||
|---|---|---|---|
|
#18+
IkarА при выполнении делита точно нет никого, кто мог бы держать записи в dba.sales_total ? Другой коннект, этот же коннект но другое ДВ/ДС/прямой запрос/курсор/etc.? Ну еще можно попробовать решать бредовую проблему бредовым образом - вынести делит в отдельную процедуру и вызывать ее в нужном месте... ЗЫ Вообще было бы неплохо Аскруса на эту тему попытать, как прекрасно знающего и АСА и РВ, но он нынче крайне редкий гость... Попробую ему ссылочку скинуть, может заглянет... ------------ С уважением, IKAR IkarHomeCenter ........ Детский Дворик ........ ГавГав.Инфо Портал русскоязычной группы пользователей Sybase если идет блокировка на уровне таблицы, то почему сервер вываливается, а не просто идет сообщение о невозможности записи? и почему процедура из искуэля запускаеца стоко раз, скоко хош? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2007, 17:31 |
|
||
|
Выбивает БД
|
|||
|---|---|---|---|
|
#18+
rashmanесли идет блокировка на уровне таблицы, то почему сервер вываливается, а не просто идет сообщение о невозможности записи? и почему процедура из искуэля запускаеца стоко раз, скоко хош? Честно? Понятия не имею! Я просто предложил Вам проверить те моменты, которые бы проверил сам в первую очередь, окажись я на Вашем месте, и не более того... ЗЫ В АСА, кстати, на сколько я помню, тоже не все билды стабильны. Некоторые валились чуть ли не от чиха. Так что еще, в качестве рекомендации, опять же, переформулирую пост Estets 'a: поиграйтесь с билдами РВ и ЕБФ-ами АСА... ------------ С уважением, IKAR IkarHomeCenter ........ Детский Дворик ........ ГавГав.Инфо Портал русскоязычной группы пользователей Sybase ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2007, 17:41 |
|
||
|
Выбивает БД
|
|||
|---|---|---|---|
|
#18+
rashmanASA вылетает с системной табличкой "отправить уведомление разработчикам" Вариант собственно говоря один - база умирает. Подключись к ней из Централа и сделай validate. В приведеной ХП я не увидел определения таблицы sales_total из чего я делаю вывод что это постоянная таблица а не временая, как заявлено. В любом случае в этой таблице нету смысла. Она используется только для вытаскивания резалтсета из внутренней процедуры, а это лучше делать вот так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. PS: Пользуйся тэгом src... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2007, 18:07 |
|
||
|
Выбивает БД
|
|||
|---|---|---|---|
|
#18+
White Owl rashmanASA вылетает с системной табличкой "отправить уведомление разработчикам" Вариант собственно говоря один - база умирает. Подключись к ней из Централа и сделай validate. да при чем тут валидация? с бд всё в порядке... если бы с бд было что-то не так, то запуск процедуры из искуэля был бы тоже с ашипкой. White Owl В приведеной ХП я не увидел определения таблицы sales_total из чего я делаю вывод что это постоянная таблица а не временая, как заявлено. нет. это как раз именно GLOBAL TEMPORALY TABLE ап чем и было написано ранее... есь GLOBAL, которые висят в списке таблиц, а есь LOCAL, которые апьявляюццо по месту... White Owl В любом случае в этой таблице нету смысла. Она используется только для вытаскивания резалтсета из внутренней процедуры, а это лучше делать вот так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. не пойдет... процедура sp_sales_all_reserv наполняет таблицу и ничего там не селектица. так сложилось исторически и в таком виде досталось мне. менять что-л в этом месте - это подписать себе на год вперед проблемы и претензии из бухгалтерии и от складов. White Owl PS: Пользуйся тэгом src... с тегами учту... просто не заметил... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2007, 18:47 |
|
||
|
Выбивает БД
|
|||
|---|---|---|---|
|
#18+
IkarНу еще можно попробовать решать бредовую проблему бредовым образом - вынести делит в отдельную процедуру и вызывать ее в нужном месте... не помогло ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2007, 19:01 |
|
||
|
Выбивает БД
|
|||
|---|---|---|---|
|
#18+
- как коннектитесь к БД ODBC или SYC? - как вызываете процедуру из ПБ - можно ли вызвать процедуру несколько раз из самого билдера (database painter) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2007, 19:08 |
|
||
|
Выбивает БД
|
|||
|---|---|---|---|
|
#18+
rashmanвсё зашибись до тех пор, пока не вызываю эту же процедуру второй раз. при повторном вызове процедуры из приложения ложица сервер БД.IMHO, это проблема именно БД. Т.к. ни при каких условиях она не должна ложиться. Для начала все-таки надо поглядеть сообщение об ошибке, с которым все умирает, и попробовать поискать в списке багфиксов для ASA. Или просто накатить последний ASA 9.* А не падает из isql из-за другого способа вызов хранимой. Сэмулировать из-под PB isql можно через execute immediate. Если совсем ничего не поможет, то придется ставить фиктивные запросы, которые уже нащупаны. И еще. А не стоит ли RetrieveAsNeed? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2007, 19:38 |
|
||
|
Выбивает БД
|
|||
|---|---|---|---|
|
#18+
покажи пожалуйста синтаксис DataWindow, раздел table(........) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2007, 01:01 |
|
||
|
Выбивает БД
|
|||
|---|---|---|---|
|
#18+
rcryoпокажи пожалуйста синтаксис DataWindow, раздел table(........) И еще сюда описание самой глобальной таблички (Ctrl-C в Central на ней и копипаст сюда). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2007, 08:56 |
|
||
|
Выбивает БД
|
|||
|---|---|---|---|
|
#18+
Так может и не заморачиватся с delete? Просто использовать truncate Я не великий спец по ASA, но под Oracle я бы так и сделал -------------------------------------------------- Главная деталь любой машины - голова ее владельца ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2007, 09:13 |
|
||
|
Выбивает БД
|
|||
|---|---|---|---|
|
#18+
А локальную функцию обьявить можно, тогда перенести del или trunc туда Сразу будет я сно в чем причина:) -------------------------------------------------- Главная деталь любой машины - голова ее владельца ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2007, 09:15 |
|
||
|
Выбивает БД
|
|||
|---|---|---|---|
|
#18+
подключаюсь через ОДБЦ Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2007, 10:05 |
|
||
|
Выбивает БД
|
|||
|---|---|---|---|
|
#18+
spas2001Так может и не заморачиватся с delete? Просто использовать truncate Я не великий спец по ASA, но под Oracle я бы так и сделал -------------------------------------------------- Главная деталь любой машины - голова ее владельца ИМХО не очень удачная идея хотя бы по правам доступа... чтобы пользователь мог делать трункейт ему надо дать alter на таблицу, что не есь гут. но я попробовал. ваще не понятно. после трункейта таблица ваще не наполняеца. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2007, 10:16 |
|
||
|
Выбивает БД
|
|||
|---|---|---|---|
|
#18+
ASCRUSИ еще сюда описание самой глобальной таблички (Ctrl-C в Central на ней и копипаст сюда). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2007, 11:01 |
|
||
|
Выбивает БД
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2007, 13:21 |
|
||
|
Выбивает БД
|
|||
|---|---|---|---|
|
#18+
Мужчина,я давно уже промышленно на PB не пишу,но по старой памяти,наш лидер просил дописывать перед текстом вызова процы в окошечке,таком маленьком Код: plaintext А исчо,если жизнь останеться такая тяжёлая,может в retrieveend сделать Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2007, 13:26 |
|
||
|
Выбивает БД
|
|||
|---|---|---|---|
|
#18+
KOLCHOZ_POSTEVENTМужчина,я давно уже промышленно на PB не пишу,но по старой памяти,наш лидер просил дописывать перед текстом вызова процы в окошечке,таком маленьком Код: plaintext не совсем понял где прописывать.... KOLCHOZ_POSTEVENT давно было,не судите строго,забыл всё к чертям. А исчо,если жизнь останеться такая тяжёлая,может в retrieveend сделать Код: plaintext 1. 2. 3. этот метод срабатывает... но он корявый. мы просто обнуляем подсоединение и ессно "каждый раз в первый класс!". кроме того теряется инфа о соединении ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2007, 14:47 |
|
||
|
Выбивает БД
|
|||
|---|---|---|---|
|
#18+
Если так,по бырому,попробуйте,вдруг пойдёт. Код: plaintext 1. 2. 3. 4. 5. 6. Там, где перечислены поля в гриде,жёлтая,такая табличка,найдите свободное место и right click,выбирете stored procedure,оно и откроется,должно,по крайней мере.Когда будете дописывать,на ENTER жмите вместе с cntrl,иначе,он думает,то вы давите OK. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2007, 17:50 |
|
||
|
|

start [/forum/topic.php?fid=15&msg=34712898&tid=1337044]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
45ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
| others: | 14ms |
| total: | 154ms |

| 0 / 0 |

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