|
|
|
Обращение к элементам курсора
|
|||
|---|---|---|---|
|
#18+
Всем привет! На работе из за отсутствия специалиста по Oracle пришлось реализовывать некоторый функционал, а сам я никогда этого не касался. Написал функцию которая берет некоторые данные и помещает их в курсор: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. Она возвращает значения в виде {<STOP_ID=3,REMOVAL_LAST_YEAR=2015>,} Есть у меня триггер, который обращается к функции, берет значение назначает их для новой записи Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. и все было нормально когда функция возвращала курсору одну переменную. Весь вопрос в том как теперь триггеру обращаться к элементам курсора? Я плохо знаком с синтаксисом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2016, 18:24 |
|
||
|
Обращение к элементам курсора
|
|||
|---|---|---|---|
|
#18+
Egor8413, процедура с тремя ин-аут-параметрами ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2016, 18:59 |
|
||
|
Обращение к элементам курсора
|
|||
|---|---|---|---|
|
#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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2016, 19:47 |
|
||
|
Обращение к элементам курсора
|
|||
|---|---|---|---|
|
#18+
Спасибо! все что вы написали работает правильно, т.е. возвращает необходимые данные. Но в моей ситуации появляется ошибка. Сначала при добавлении записи у меня срабатывает триггер Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. Вызываемая им процедура выглядит так : Код: 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. А затем уже при инсерте в PR340_FR73_S1_T1 срабатывает триггер, который вы мне помогли написать Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. И в нем вызывается процедура Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. И именно на втором триггере возникает ошибка Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Что у меня может быть не так и в какую сторону копать, чтобы выявить ошибку? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2016, 14:49 |
|
||
|
Обращение к элементам курсора
|
|||
|---|---|---|---|
|
#18+
Egor8413, Код: plsql 1. Проверять, всегда ли запрос возвращает данные. И либо обрабатывать возникающую ошибку, либо неявно гасить её используя агрегацию и обработку NULL. Код: plsql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2016, 15:06 |
|
||
|
Обращение к элементам курсора
|
|||
|---|---|---|---|
|
#18+
Вся проблема именно в :NEW.FORMS_ID. Когда подставляю какой существующий ID - все норм. Как проверить присваивается ли какой либо новый ID ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2017, 13:27 |
|
||
|
Обращение к элементам курсора
|
|||
|---|---|---|---|
|
#18+
Проверять, всегда ли запрос возвращает данные. exception when NO_DATA_FOUND ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2017, 13:42 |
|
||
|
Обращение к элементам курсора
|
|||
|---|---|---|---|
|
#18+
При выполнении Код: plsql 1. срабатывает нормально, т. е используется 2016 и я думаю что это явно указывает что :NEW.FORMS_ID = NULL. Но почему именно :NEW.FORMS_ID = NULL, остальные параметры (:NEW.POE_STEAM_TURBINES_VID, :NEW.STOP_ID, :NEW.REMOVAL_LAST_YEAR) имеют значения, а именно с этим проблема. Ведь ошибка происходит на строке Код: plsql 1. в процедуре autocreate, ведь на этом моменте уже сгенерирован новый ID, возможно ли его как то передать в триггер SCI_TURBINE_PAR_EVENT ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2017, 15:24 |
|
||
|
Обращение к элементам курсора
|
|||
|---|---|---|---|
|
#18+
А затем уже при инсерте в PR340_FR73_S1_T1 срабатывает триггер, который вы мне помогли написать create or replace TRIGGER "SCI_TURBINE_PAR_EVENT" BEFORE INSERT ON SCI_TURBINE_PAR Разберитесь для начала с вашими таблицами и триггерами. Вызнавать телепатически вашу конфигурацию особого желания нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2017, 18:55 |
|
||
|
Обращение к элементам курсора
|
|||
|---|---|---|---|
|
#18+
извиняюсь за неразбериху на самом деле там SCI_TURBINE_PAR и PR340_FR73_S1_T1 это синонимы, на самом деле это одна таблица. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2017, 21:44 |
|
||
|
Обращение к элементам курсора
|
|||
|---|---|---|---|
|
#18+
Оказывается вся проблема была в том что нельзя обращаться к изменяемой таблице. Я сделал буферную таблицу, в которую в момент срабатывания триггера заношу все те данные что мне нужны, использую их далее и потом очищаю эту буферную таблицу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2017, 12:07 |
|
||
|
|

start [/forum/topic.php?fid=52&fpage=182&tid=1886703]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
40ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
40ms |
get tp. blocked users: |
2ms |
| others: | 252ms |
| total: | 386ms |

| 0 / 0 |
