|
|
|
Не существует декларированная таблица в compound trigger.
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток, уважаемые форумчане! Пытаюсь обойти мутирование таблиц путём создания compound триггера. На этапе компиляции возникает ошибка, "table or view does not exist". Что я хотел сделать: в statement триггере выбрать данные в таблицу, в each row триггере обратиться к ней запросом. Средства: Oracle 11g R2, APEX 5.1.3.00.05. Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2017, 23:07 |
|
||
|
Не существует декларированная таблица в compound trigger.
|
|||
|---|---|---|---|
|
#18+
Код: plsql 1. SQL Reference/Functions ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2017, 00:50 |
|
||
|
Не существует декларированная таблица в compound trigger.
|
|||
|---|---|---|---|
|
#18+
Алексей Клименко, Нагородил... Зачем засовывать в коллекцию все договора со времен царя Гороха если все что нам нужно это запомнить IdProf и DATA из INSERT/UPDATE? 1. Создаем обьектный тип. Предположу PROFESSII_IDPROFESSII имеет тип NUMBER: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 2. В триггере cоздаем переменную типа DG_TBL_TYPE: V_LIST DG_TBL_TYPE := DG_TBL_TYPE(); 3. В FOR EACH ROW: V_LIST.COUNT; V_LIST(V_LIST.COUNT).DATA := :NEW.DATA_DOGOVORA; V_LIST(V_LIST.COUNT).IdProf := :NEW.PROFESSII_IDPROFESSII; 3. В AFTER STATEMENT: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Но все это от лукавого. Триггер животное транзакционное. Посему если несолько сессий всталяют договора на ту же IdProf то они не увидят остальных если на момент проверки остальные еще не закончили (commit) свои транзакции. Так-что без сериализации (а посему без потери производительности) не обойтись. SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2017, 02:00 |
|
||
|
Не существует декларированная таблица в compound trigger.
|
|||
|---|---|---|---|
|
#18+
table(), Здравствуйте! Извините, мне не совсем понятен ваш ответ, не могли бы вы разъяснить более подробно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2017, 08:54 |
|
||
|
Не существует декларированная таблица в compound trigger.
|
|||
|---|---|---|---|
|
#18+
SY, Добрый день! Большое спасибо за помощь! Я сделал всё, как вы советовали, исправив некоторые ошибки: пропущена одна запятая, один символ конкатенации, и вместо нижнего подчеркивания нужно было использовать точку. Но столкнулся с еще одной проблемой, "'COUNT' is not a procedure or is undefined". Я так понимаю, Oracle считает процедуру COUNT для созданного типа данных не объявленной, стоит ли её объявить явно при создании типа, или есть дургое решение проблемы? Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2017, 09:02 |
|
||
|
Не существует декларированная таблица в compound trigger.
|
|||
|---|---|---|---|
|
#18+
Алексей КлименкоЯ так понимаю, Oracle считает процедуру COUNT для созданного типа данных не объявленной, стоит ли её объявить явно при создании типа, или есть дургое решение проблемы?Есть. Тебе рано ещё писать триггеры, а тем более составные. Ты не понимаешь основ. Сперва надо сходить в ясли. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2017, 09:25 |
|
||
|
Не существует декларированная таблица в compound trigger.
|
|||
|---|---|---|---|
|
#18+
Алексей Клименко, если -- V_LIST.COUNT; закоментировать ушибка уходит? ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2017, 09:43 |
|
||
|
Не существует декларированная таблица в compound trigger.
|
|||
|---|---|---|---|
|
#18+
Алексей Клименко, Oops, Замени V_LIST.COUNT; нa V_LIST.EXTEND; SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2017, 16:36 |
|
||
|
Не существует декларированная таблица в compound trigger.
|
|||
|---|---|---|---|
|
#18+
Elic, буду признателен, если на эти самые ясли вы мне укажете. Но прошу понять, что на поспешность есть у меня причины. Отчаянные времена, отчаянные меры, как говорится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2017, 18:28 |
|
||
|
Не существует декларированная таблица в compound trigger.
|
|||
|---|---|---|---|
|
#18+
Stax, да, триггер скомпилируется, но работать не будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2017, 18:29 |
|
||
|
Не существует декларированная таблица в compound trigger.
|
|||
|---|---|---|---|
|
#18+
SY, триггер скомпилировался, но при попытке обновления поля таблицы возникают ошибки. Код: 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.11.2017, 18:32 |
|
||
|
Не существует декларированная таблица в compound trigger.
|
|||
|---|---|---|---|
|
#18+
Алексей КлименкоОтчаянные времена, отчаянные меры, как говорится.Говнокод, быдлокод, … ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2017, 18:36 |
|
||
|
Не существует декларированная таблица в compound trigger.
|
|||
|---|---|---|---|
|
#18+
Алексей Клименко, Упс еще раз. Забыл что элемeнт коллекции еcть обьект и посему тоже должен быть инициализиован. Замени: Код: plsql 1. 2. на: Код: plsql 1. Код: 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. SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2017, 18:56 |
|
||
|
Не существует декларированная таблица в compound trigger.
|
|||
|---|---|---|---|
|
#18+
Elic, ИМХО, Его можно избежать после n-го количества часов(месяцев? лет?) практики, а когда нужно наваять что-то для лабы, а до конца семестра осталось не так уж и много, то может быть конечно и грех это, но готов согрешить. Другой же способ избежать быдлокода, на мой взгляд, обратиться к более опытным товарищам за помощью, ради чего и пришел сюда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2017, 18:57 |
|
||
|
Не существует декларированная таблица в compound trigger.
|
|||
|---|---|---|---|
|
#18+
Алексей Клименко ради чего и пришел сюда. Ну тогда следует попробовать работу триггера при параллельной вставке в двух или более сессиях. Отдельно - при bulk-вставке (к примеру, insert select) Осознать свою вину, меру, степень, глубину. Поставить задачу как она должна быть решена, а не как показалось студенту ("обойти мутирование"). И спросить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2017, 19:04 |
|
||
|
Не существует декларированная таблица в compound trigger.
|
|||
|---|---|---|---|
|
#18+
SY, Большое спасибо, всё получилось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2017, 19:18 |
|
||
|
Не существует декларированная таблица в compound trigger.
|
|||
|---|---|---|---|
|
#18+
andrey_anonymous, Цель одна - сдать лабораторную. Если в процессе её достижения, или же волею случая при дальнейшей работе с oracle-ом вообще(хотя господа, вероятно, не хотели бы меня видеть и вовсе в рядах коллег своих по причине быдлокодерства), столкнусь с чем-то описанным вами, то обязательно вернусь сюда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2017, 19:29 |
|
||
|
Не существует декларированная таблица в compound trigger.
|
|||
|---|---|---|---|
|
#18+
SY, зачем SQL-ные типы? імхо, compound удобен тем что не надо создавать пакетные переменные ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2017, 19:33 |
|
||
|
Не существует декларированная таблица в compound trigger.
|
|||
|---|---|---|---|
|
#18+
StaxSY, зачем SQL-ные типы? імхо, compound удобен тем что не надо создавать пакетные переменные ? TABLE(V_LIST) SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2017, 20:38 |
|
||
|
Не существует декларированная таблица в compound trigger.
|
|||
|---|---|---|---|
|
#18+
SYStaxSY, зачем SQL-ные типы? імхо, compound удобен тем что не надо создавать пакетные переменные ? TABLE(V_LIST) SY. так жеш бес табле можно ж ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2017, 23:17 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39562201&tid=1884821]: |
0ms |
get settings: |
6ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
46ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 218ms |
| total: | 351ms |

| 0 / 0 |
