|
|
|
Не выполняется процедура, если запускать из PB
|
|||
|---|---|---|---|
|
#18+
Доброй день. Есть процедура в 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 начинает пересчитывать как надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2007, 17:22 |
|
||
|
Не выполняется процедура, если запускать из PB
|
|||
|---|---|---|---|
|
#18+
ну а ошибка какая приэтом? и вообще где проверка на ошибки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2007, 17:58 |
|
||
|
Не выполняется процедура, если запускать из PB
|
|||
|---|---|---|---|
|
#18+
RPC спасёт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2007, 17:04 |
|
||
|
Не выполняется процедура, если запускать из PB
|
|||
|---|---|---|---|
|
#18+
А если делать так? 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; У нас от описанного вами вызова отказалиись давно, уже не помню, по каким причинам. А такой вызов работает без сбоев. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2007, 08:30 |
|
||
|
Не выполняется процедура, если запускать из PB
|
|||
|---|---|---|---|
|
#18+
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 было. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2007, 11:40 |
|
||
|
Не выполняется процедура, если запускать из PB
|
|||
|---|---|---|---|
|
#18+
Почему бы не написать, что содержат ( при tran.SqlCode<>0 ): tran.SQLCode, tran.SQLDBCode ? Good Luck ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2007, 10:12 |
|
||
|
Не выполняется процедура, если запускать из PB
|
|||
|---|---|---|---|
|
#18+
Скорее всего процедура автоматически не скомпилилась при обращении (часто встречается)- отсюда и все глюки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2007, 11:31 |
|
||
|
Не выполняется процедура, если запускать из PB
|
|||
|---|---|---|---|
|
#18+
ChVПочему бы не написать, что содержат ( при tran.SqlCode<>0 ): tran.SQLCode, tran.SQLDBCode ? Good Luck ! да в том-то и дело, что это появляется, а стоит вызвать процедуру из Оракла, то после этого все хорошо отрабатывает, не перекомпилируя проет в PB. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2007, 01:11 |
|
||
|
Не выполняется процедура, если запускать из PB
|
|||
|---|---|---|---|
|
#18+
Самое грустное - в слове "периодически". Пока ошибку не зафиксируешь с ней тяжело бороться. Я вижу 2 пути поиска решения : 1. "поиграться" с параметрами транзакции 2. Напрягает слово "периодически". Не может ли быть ситуация, при которой одновременная работа с этими таблицами несколькими пользователями ( update, delete, insert ) может мешать выполнению Вашей процедуры ? Может есть смысл локировать какие-либо таблицы на время выполнения процедуры ? Это, естественно, предположение. Ведь я не знаю что выполняет Ваша процедура. У меня была похожая ситуация. Локирование - решило проблему ( правда БД была MS SQL ). Good Luck ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2007, 09:55 |
|
||
|
Не выполняется процедура, если запускать из PB
|
|||
|---|---|---|---|
|
#18+
Тогда приблизительно так (если вы не хотите использовать предварительную компиляцию в SQL) 1.Запросить состояние процедуры с вьюхи all_objects и если status - invalid или сделать ее запрос примерно так execute immediate 'select bla-bla from dual' или же воспользоваться DBMS_UTILITY.COMPILE_SCHEMA(user) -------------------------------------------------- Главная деталь любой машины - голова ее владельца ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2007, 10:02 |
|
||
|
|

start [/forum/topic.php?fid=15&msg=34488428&tid=1337204]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
36ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 239ms |
| total: | 364ms |

| 0 / 0 |

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