|
процедура отваливается
|
|||
---|---|---|---|
#18+
Господа, имеется процедура на Oracle 8i нормально компилируется и работает. Вызываем ее из Delphi5. И после какого-то вызова 10-го ли, или тысячного - по-разному, она вдруг перестает работать. Как-будто откомпилирована с ошибками. 1) Почему это происходит 2) Что делать 3) можно ли заново откомпилировать процедуру с клиента каки-либо способом (кроме посылки sql-запроса (CREATE OR REPLACE PROCEDURE и все ее тело))? Заранее благодарен. Вадим. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2002, 13:54 |
|
процедура отваливается
|
|||
---|---|---|---|
#18+
Если взять за основу то, что состояние "работающая" означает изменение дынных процедурой в базе, а "неработающая" - соответственно их неизменение, то можно предложить следующее: в процедуре происходит какойто exception, который не обрабатываеться в этой процедуре. Причем все изменения, производимые процедурой в транзакции, приведшей к исключению, откатываються автоматически. PS: Может ктото подскажет, как избавиться от этого АВТОМАТИЧЕСКОГО отката? Может как то возможно это настроить? Сколько не копал документацию, как от этого избавиться, увы, не нашел. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.03.2002, 07:52 |
|
процедура отваливается
|
|||
---|---|---|---|
#18+
К сожалению процедура действительно вообще перестает работать, при вызове из FoxPro возвращаеться -1, из Delphi тоже ошибки. После такого сбоя ее приходится только перекомпилировать (, прям хоть перед запуском ее каздый раз компилируй с клиента. А в конце я по-честному поставил WHEN OTHERS и после него rollback, так что выполняется она без необрабатываемых ошибок (или может этот rollback все портит?). Она просто вообще перестает работать после энного запуска. В чем же дело? И что делать? Кто-то сказал мне что мол делфи плохо формирует запрос на сервер с вызовом процедуры и она от этого портится. Не знаю - она же может сотндю раз у меня выполниться а потом просто портится... ... |
|||
:
Нравится:
Не нравится:
|
|||
22.03.2002, 17:33 |
|
процедура отваливается
|
|||
---|---|---|---|
#18+
Это у тебя ещё цветочки С комбинацией 5.11-й БДЕ, последний драйвер для 8-го оракула и 8.1.х сервер видены и не такие чудеса. В частности, иногда вместо данных в первой строке грида можно получить пустоту и тому подобные прелести. Так что, это не сервер виноват, а БДЕ. Мне советовали вернуться обратно на клиент от 7-ки Там действительно таких глюков не наблюдается, ни с процедурами, ни с запросами. И главный вопрос -- не забывашь ли ты делать Prepare. Его вообще-то, так же как и с запросами, надо делать всего один раз за сессию, но перед ExecProc. Да... Alter procedure some_proc compile; Ну или совсем жестоко -- dbmsutil.sql: dbms_dll.alter_compile Это можно и через ExecProc звать -- procedure alter_compile(type varchar2, schema varchar2, name varchar2); -- Equivalent to SQL "ALTER PROCEDURE|FUNCTION|PACKAGE [<schema>.] -- <name> COMPILE [BODY]". If the named object is this package, -- or any packages upon which it depends (currently "standard" or -- "dbms_standard") then the procedure simply returns (since these -- packages are clearly successfully compiled). -- Input arguments: -- type -- Must be one of "PROCEDURE", "FUNCTION", "PACKAGE", "PACKAGE -- BODY" or "TRIGGER". -- schema -- The schema name. If NULL then use current schema. Case sensitive. -- name -- The name of the object. Case sensitive. -- Exceptions: -- ORA-20000: Insufficient privileges or object does not exist. -- ORA-20001: Remote object, cannot compile. -- ORA-20002: Bad value for object type. Should be one of PACKAGE, -- PACKAGE BODY, PROCEDURE, FUNCTION, or TRIGGER. -- ... |
|||
:
Нравится:
Не нравится:
|
|||
22.03.2002, 21:59 |
|
|
start [/forum/topic.php?fid=52&fpage=2849&tid=1993411]: |
0ms |
get settings: |
11ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
36ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
others: | 288ms |
total: | 407ms |
0 / 0 |