powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Не выполняется процедура, если запускать из PB
10 сообщений из 10, страница 1 из 1
Не выполняется процедура, если запускать из PB
    #34484292
benzo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброй день.
Есть процедура в Oracle.

Объявляю ее вызов в PB:

declare ora_proc_pbnew procedure for ora_proc(:date_nn, :date_kk, :param);
execute ora_proc_pbnew;
и далее:
messagebox("", "Проверьте позиции!");

пересчет в зависимости от периоа занимает какое-то время.

Почему-то периодически возникает такая ситуация, что процедура не запускается из PB, то есть сразу же вылетает messagebox и, соотв-но, никакого пересчета не произошло.
Но если я "вручную" запущу эту процедуру из PL/SQL developer , то после этого и PB начинает пересчитывать как надо.
...
Рейтинг: 0 / 0
Не выполняется процедура, если запускать из PB
    #34484452
Фотография Dmitry.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну а ошибка какая приэтом?
и вообще где проверка на ошибки?
...
Рейтинг: 0 / 0
Не выполняется процедура, если запускать из PB
    #34487249
Геннадич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RPC спасёт.
...
Рейтинг: 0 / 0
Не выполняется процедура, если запускать из PB
    #34488428
tiger_sc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А если делать так?

ls_sql = "BEGIN ora_proc(TO_DATE('" + date_nn + "','dd.mm.yyyy'), TO_DATE('" + date_kk + "','dd.mm.yyyy'), " + string(param) + "); END;"

EXECUTE IMMEDIATE :ls_sql USING glb.cur_tr;


У нас от описанного вами вызова отказалиись давно, уже не помню, по каким причинам. А такой вызов работает без сбоев.
...
Рейтинг: 0 / 0
Не выполняется процедура, если запускать из PB
    #34489067
benzo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tiger_scА если делать так?

ls_sql = "BEGIN ora_proc(TO_DATE('" + date_nn + "','dd.mm.yyyy'), TO_DATE('" + date_kk + "','dd.mm.yyyy'), " + string(param) + "); END;"

EXECUTE IMMEDIATE :ls_sql USING glb.cur_tr;


У нас от описанного вами вызова отказалиись давно, уже не помню, по каким причинам. А такой вызов работает без сбоев.

Спасибо, попробую сделать так... А то сейчас не могу посмотреть, что за ошибка возникает. Было как-то до этого, не считалось. Проверил через PL/SQL Developer - там посчиталось и потом из PB стало считаться. И так раза 2 было.
...
Рейтинг: 0 / 0
Не выполняется процедура, если запускать из PB
    #34491798
Фотография ChV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему бы не написать, что содержат ( при tran.SqlCode<>0 ):
tran.SQLCode,
tran.SQLDBCode ?

Good Luck !
...
Рейтинг: 0 / 0
Не выполняется процедура, если запускать из PB
    #34492236
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скорее всего процедура автоматически не скомпилилась при обращении (часто встречается)- отсюда и все глюки
...
Рейтинг: 0 / 0
Не выполняется процедура, если запускать из PB
    #34494291
benzo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ChVПочему бы не написать, что содержат ( при tran.SqlCode<>0 ):
tran.SQLCode,
tran.SQLDBCode ?

Good Luck !


да в том-то и дело, что это появляется, а стоит вызвать процедуру из Оракла, то после этого все хорошо отрабатывает, не перекомпилируя проет в PB.
...
Рейтинг: 0 / 0
Не выполняется процедура, если запускать из PB
    #34494589
Фотография ChV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Самое грустное - в слове "периодически".
Пока ошибку не зафиксируешь с ней тяжело бороться. Я вижу 2 пути поиска решения :
1. "поиграться" с параметрами транзакции
2. Напрягает слово "периодически". Не может ли быть ситуация, при которой одновременная работа с этими таблицами несколькими пользователями ( update, delete, insert ) может мешать выполнению Вашей процедуры ? Может есть смысл локировать какие-либо таблицы на время выполнения процедуры ? Это, естественно, предположение. Ведь я не знаю что выполняет Ваша процедура. У меня была похожая ситуация. Локирование - решило проблему ( правда БД была MS SQL ).

Good Luck !
...
Рейтинг: 0 / 0
Не выполняется процедура, если запускать из PB
    #34494613
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда приблизительно так (если вы не хотите использовать предварительную компиляцию в SQL)
1.Запросить состояние процедуры с вьюхи all_objects и если status - invalid или сделать ее запрос
примерно так execute immediate 'select bla-bla from dual' или же воспользоваться DBMS_UTILITY.COMPILE_SCHEMA(user)
--------------------------------------------------
Главная деталь любой машины - голова ее владельца
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Не выполняется процедура, если запускать из PB
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]