|
|
|
Вызов двух процедур в одной транзакции.
|
|||
|---|---|---|---|
|
#18+
Добрый день. Есть вопрос. Мне нужно вызвать две процедуры в одной транзакции. Вызываем сначала процедуру А() и если она отработала успешно вызвать процедуру В() и если она отработало тоже нормально выполнить коммит, а если нет то вернуть ошибку. В общем нужно вызвать А() затем В() и после успешного завершения обоих выполнить COMMIT. Как это провернуть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2019, 13:09 |
|
||
|
Вызов двух процедур в одной транзакции.
|
|||
|---|---|---|---|
|
#18+
Alex2019, Concepts ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2019, 13:15 |
|
||
|
Вызов двух процедур в одной транзакции.
|
|||
|---|---|---|---|
|
#18+
Alex2019Как это провернуть.Это задача для послеясельной группы детсада. Т.е. сперва надо отмотать срок в яслях. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2019, 13:20 |
|
||
|
Вызов двух процедур в одной транзакции.
|
|||
|---|---|---|---|
|
#18+
Alex2019, Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2019, 13:43 |
|
||
|
Вызов двух процедур в одной транзакции.
|
|||
|---|---|---|---|
|
#18+
Кроик Семён Код: plsql 1. Зачем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2019, 13:44 |
|
||
|
Вызов двух процедур в одной транзакции.
|
|||
|---|---|---|---|
|
#18+
Да я понимая что легко. Но первый раз с этим вообще работаю. Хот пример какой-то может кто-то даст. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2019, 13:44 |
|
||
|
Вызов двух процедур в одной транзакции.
|
|||
|---|---|---|---|
|
#18+
Alex2019пример какой-то может кто-то даст.RTFM Subprogram Invocations (FAQ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2019, 13:46 |
|
||
|
Вызов двух процедур в одной транзакции.
|
|||
|---|---|---|---|
|
#18+
Elic, ElicКроик Семён Код: plsql 1. Зачем? Помедитировал над вопросом и подумал, что автору нужно закоммитить A и B и только это, не влияя на вызывающую сессию ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2019, 13:48 |
|
||
|
Вызов двух процедур в одной транзакции.
|
|||
|---|---|---|---|
|
#18+
Кроик Семённе влияя на вызывающую сессиюИзмышлизмЪ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2019, 13:50 |
|
||
|
Вызов двух процедур в одной транзакции.
|
|||
|---|---|---|---|
|
#18+
Alex2019Мне нужно вызвать две процедуры в одной транзакции. Вызываем сначала процедуру А() и если она отработала успешно вызвать процедуру В() и если она отработало тоже нормально выполнить коммит, а если нет то вернуть ошибку. В общем нужно вызвать А() затем В() и после успешного завершения обоих выполнить COMMIT. Как это провернуть. Именно так и проворачивай: стартуй транзакцию, вызывай процедуры, в конце коммит. В чём проблема-то? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2019, 13:50 |
|
||
|
Вызов двух процедур в одной транзакции.
|
|||
|---|---|---|---|
|
#18+
Alex2019Вызываем сначала процедуру А() и если она отработала успешно вызвать процедуру В() и если она отработало тоже нормальноRTFM Statement-Level Atomicity (FAQ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2019, 13:51 |
|
||
|
Вызов двух процедур в одной транзакции.
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, Нужно вызвать А() она вернет код ошибки, если он ОК, то вызвать В() и если код тоже ОК то совершить транзакцию. Если любая из них выдала код НЕ_ОК, то отка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2019, 13:52 |
|
||
|
Вызов двух процедур в одной транзакции.
|
|||
|---|---|---|---|
|
#18+
Alex2019Нужно вызвать А() она вернет код ошибки, если он ОК, то вызвать В() и если код тоже ОК то совершить транзакцию. Если любая из них выдала код НЕ_ОК, то отка. Ну так в чём проблема-то? Код: plaintext 1. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2019, 13:58 |
|
||
|
Вызов двух процедур в одной транзакции.
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovAlex2019Нужно вызвать А() она вернет Ну так в чём проблема-то?Alex2019процедуру А() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2019, 14:01 |
|
||
|
Вызов двух процедур в одной транзакции.
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, Т.е. Я так понял.? DECLARE error number; BEGIN A(error); if error <> 0 then rollback; B(error); if error <> 0 then rollback; COMMIT; END; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2019, 14:01 |
|
||
|
Вызов двух процедур в одной транзакции.
|
|||
|---|---|---|---|
|
#18+
Alex2019Я так понял.? Нет, это бред. Вернись на курсы для начинающих программистов. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2019, 14:31 |
|
||
|
Вызов двух процедур в одной транзакции.
|
|||
|---|---|---|---|
|
#18+
Код: plsql 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. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2019, 14:34 |
|
||
|
Вызов двух процедур в одной транзакции.
|
|||
|---|---|---|---|
|
#18+
andrey_anonymous, В коня ли корм? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2019, 15:14 |
|
||
|
Вызов двух процедур в одной транзакции.
|
|||
|---|---|---|---|
|
#18+
Alex2019Добрый день. Есть вопрос. Мне нужно вызвать две процедуры в одной транзакции. Вызываем сначала процедуру А() и если она отработала успешно вызвать процедуру В() и если она отработало тоже нормально выполнить коммит, а если нет то вернуть ошибку. В общем нужно вызвать А() затем В() и после успешного завершения обоих выполнить COMMIT. Как это провернуть. Вы хотите сказать, что код PL/SQL, по-умолчанию, работает синхронно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2019, 15:38 |
|
||
|
Вызов двух процедур в одной транзакции.
|
|||
|---|---|---|---|
|
#18+
rf_mailВы хотите сказать, что код PL/SQL, по-умолчанию, работает синхронно?Формулировка недоумевает варианты ответа: синхронно, асинхронно. Причем это переключается неким по-умолчанием. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2019, 16:03 |
|
||
|
Вызов двух процедур в одной транзакции.
|
|||
|---|---|---|---|
|
#18+
-2-rf_mailВы хотите сказать, что код PL/SQL, по-умолчанию, работает синхронно?Формулировка недоумевает варианты ответа: синхронно, асинхронно. Причем это переключается неким по-умолчанием. на этот вопрос советую ответ begin А(); В(); COMMIT; end; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2019, 16:12 |
|
||
|
Вызов двух процедур в одной транзакции.
|
|||
|---|---|---|---|
|
#18+
rf_mail, PS SQL работаю пару дней, так что на такие вопросы я ответить не могу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2019, 16:17 |
|
||
|
Вызов двух процедур в одной транзакции.
|
|||
|---|---|---|---|
|
#18+
Alex2019SQL работаю пару днейЗаходи через пару лет. Может за 100 понедельников что-нибудь, да освоишь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2019, 16:36 |
|
||
|
Вызов двух процедур в одной транзакции.
|
|||
|---|---|---|---|
|
#18+
-2-Alex2019SQL работаю пару днейЗаходи через пару лет. Может за 100 понедельников что-нибудь, да освоишь. Ок. Постараюсь освоить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2019, 16:41 |
|
||
|
Вызов двух процедур в одной транзакции.
|
|||
|---|---|---|---|
|
#18+
rf_mail-2-пропущено... Формулировка недоумевает варианты ответа: синхронно, асинхронно. Причем это переключается неким по-умолчанием. на этот вопрос советую ответ begin А(); В(); COMMIT; end; Это если где-то в A() какой-то умник не поставил. WHEN OTHERS THEN NULL Автор, я бы уточнил бы критерий " успешного завершения обоих". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2019, 16:44 |
|
||
|
Вызов двух процедур в одной транзакции.
|
|||
|---|---|---|---|
|
#18+
AserYZ, A(errCode); если код ошибки 0, то продолжаем В(errCode) если и здесь все ок errCode = 0, то коммит и вернуть errCode. ************** A(errCode); если код ошибки -1, rollback, и вернуть код ошибки. т.е. -1) В() не вызываем. ************************ A(errCode); если код ошибки 0, то продолжаем В(errCode) если errCode = -1, то rollback, и вернуть код ошибки. т.е. -1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2019, 17:08 |
|
||
|
Вызов двух процедур в одной транзакции.
|
|||
|---|---|---|---|
|
#18+
AserYZЭто если где-то в A() какой-то умник не поставил. WHEN OTHERS THEN NULL Пусть процедура содержит секцию обработки исключительных ситуаций и завершается без exception. Это означает, что процедура завершилась УСПЕШНО, что бы это ни значило. Если при этом результат выполнения процедуры не соответствует ТЗ, то такая проблема решается багрепортом с последующим багфиксом указанной процедуры. Не дело вызывающего кода контролировать корректность вызываемых методов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2019, 17:16 |
|
||
|
Вызов двух процедур в одной транзакции.
|
|||
|---|---|---|---|
|
#18+
Alex2019если код ошибки -1, rollback Сразу два недочета. - интерфейс, основанный на анализе кода ошибок, ведет к многословному и плохо читаемому, замусоренному однотипными конструкциями коду. - выполнять rollback или commit внутри процедуры - моветон. Препятствует переиспользованию кода и снижает сопровождаемость. Как сделать rollback правильно - я показал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2019, 17:20 |
|
||
|
Вызов двух процедур в одной транзакции.
|
|||
|---|---|---|---|
|
#18+
andrey_anonymousПусть процедура содержит секцию обработки исключительных ситуаций и завершается без exception. Это означает, что процедура завершилась УСПЕШНО, что бы это ни значило. У автора, как оказалось, другое мнение, он расчитывает на RC. Отчасти такая реализация тоже имеет место. Наример, комбинация входных параметров A() неправильная. Причем RC=-1 и RC=-2 могут означать две различных ситуации с последующей реакцией в вызывающем коде. Оракл не стесняется использовать RC :) Задача была простая - вызвать 2 процедуры последовательно в одной транзакции с анализом RC. Для начала я бы их переделал в функции, раз уж RC, либо параметры INOUT прописал бы с последующим анализом в вызывающем коде. С чем безоговорочно согласен, так это с тем, что коммитить/ролбечить транзакции нужно на уровне бизнес логики (в общем случае) а не на уровне БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2019, 18:43 |
|
||
|
Вызов двух процедур в одной транзакции.
|
|||
|---|---|---|---|
|
#18+
AserYZ, Да вы правы, но увы есть пакет, в нем 2 процедуры, и ТЗ в одной транзакции выполнить их, и после успешного завершения обоих выполнить коммит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2019, 19:13 |
|
||
|
Вызов двух процедур в одной транзакции.
|
|||
|---|---|---|---|
|
#18+
Alex2019ТЗ в одной транзакции выполнить их, и после успешного завершения обоих выполнить коммит. Так это тебе не сюда, а в раздел, посвящённый языку программирования в курсе которого эта лабораторная. Ибо управление транзакциями идёт из клиентского приложения. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2019, 19:18 |
|
||
|
Вызов двух процедур в одной транзакции.
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, Выполнить именно на PL SQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2019, 19:22 |
|
||
|
Вызов двух процедур в одной транзакции.
|
|||
|---|---|---|---|
|
#18+
Alex2019Выполнить именно на PL SQL. Тогда читай PL/SQL User Guide and Reference начиная с "COMMIT Statement". Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2019, 19:50 |
|
||
|
Вызов двух процедур в одной транзакции.
|
|||
|---|---|---|---|
|
#18+
Кроик СемёнAlex2019, Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. я же утром еще запостил. Вот и весь код ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2019, 20:34 |
|
||
|
Вызов двух процедур в одной транзакции.
|
|||
|---|---|---|---|
|
#18+
Кроик СемёнКроик Семён[src plsql] PRAGMA AUTONOMOUS_TRANSACTION; я же утром еще запостил Семен, заканчивайте уже плостить ерунду по утрам :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2019, 00:07 |
|
||
|
Вызов двух процедур в одной транзакции.
|
|||
|---|---|---|---|
|
#18+
andrey_anonymousСемен, заканчивайте уже плостить ерунду по утрам :)Ручник, он и в африке ручник :| ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2019, 07:48 |
|
||
|
Вызов двух процедур в одной транзакции.
|
|||
|---|---|---|---|
|
#18+
andrey_anonymous Код: plsql 1. Без использования групповых символов или escape like тут явно неуместный оператор, разве нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2019, 11:53 |
|
||
|
Вызов двух процедур в одной транзакции.
|
|||
|---|---|---|---|
|
#18+
DKbrulike тут явно неуместный оператор, разве нет? По мне так это "явно неуместное замечание". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2019, 15:49 |
|
||
|
Вызов двух процедур в одной транзакции.
|
|||
|---|---|---|---|
|
#18+
andrey_anonymous, В таком случае, прошу Вас меня искренне извинить, просто Ваши посты читаю, как мантру и стараюсь почерпнуть для себя что-то новое. А иногда в жизни даже на самые простые вещи бывает порой самое неожиданное объяснение. Поэтому я решил уточнить, может тут есть скрытый смысл, который мне, в силу ограниченного мышления, постичь не дано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2019, 16:56 |
|
||
|
Вызов двух процедур в одной транзакции.
|
|||
|---|---|---|---|
|
#18+
DKbruнеожиданное объяснениеЕсли сравниваешь строковое и числовое поле на равенство, like написать короче, чем to_char()=. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2019, 17:16 |
|
||
|
Вызов двух процедур в одной транзакции.
|
|||
|---|---|---|---|
|
#18+
DKbruпосты читаю, как мантру Вот это зря. Не сотвори себе кумира (с) DKbru и стараюсь почерпнуть для себя что-то новое. Применительно к вопросу - Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Применительно к неуместности замечания - в данной ветке это вопрос, не имеющий отношения к обсуждаемой проблеме, или оффтопик. И не просто оффтопик, а попытка увести обсуждение в дальние дали. ...вот как-то так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2019, 17:22 |
|
||
|
Вызов двух процедур в одной транзакции.
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. интересно на что он еще может заменить? напр a like '123%' substr(a,1,3)='123'? ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2019, 18:40 |
|
||
|
Вызов двух процедур в одной транзакции.
|
|||
|---|---|---|---|
|
#18+
Staxинтересно на что он еще может заменить? напр a like '123%' substr(a,1,3)='123'? ..... stax Это как раз врядли потому как по like умеет index range scan а по substr не умеет (на обычном b-tree) Regards Maxim ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2019, 18:51 |
|
||
|
Вызов двух процедур в одной транзакции.
|
|||
|---|---|---|---|
|
#18+
Maxim DemenkoStaxинтересно на что он еще может заменить? напр a like '123%' substr(a,1,3)='123'? ..... stax Это как раз врядли потому как по like умеет index range scan а по substr не умеет (на обычном b-tree) Regards Maxim я ето (like умеет index range scan) знаю, и поетому активно пользовался substr уточним - поле неиндексировано ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2019, 18:54 |
|
||
|
|

start [/forum/topic.php?all=1&fid=52&tid=1882899]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
57ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
65ms |
get tp. blocked users: |
1ms |
| others: | 235ms |
| total: | 407ms |

| 0 / 0 |
