|
Работа с коллекциями
|
|||
---|---|---|---|
#18+
Дорого времени суток! Подскажите, можно ли так писать? Или как иначе? myCol точно содержит поля id и r. Будет ещё обработка Exception на отсутствие записи (а если оно внутри update - ошибка изменится?). Сейчас дает не соответствие типов в подзапросе с table... Код: plsql 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2021, 11:54 |
|
Работа с коллекциями
|
|||
---|---|---|---|
#18+
ARRay001 Сейчас дает не соответствие типов в подзапросе с table... А код приводи более подробно, чтобы были видны типы переменных. И указывай версию. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2021, 12:01 |
|
Работа с коллекциями
|
|||
---|---|---|---|
#18+
Elic, В pkgFunc: type t_myCol is table of tab1%rowtype; в Declare процедуры: myCol pkgFunc.t_myCol:= pkgFunc.t_myCol(); Ошибка: invalid datatype Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2021, 12:05 |
|
Работа с коллекциями
|
|||
---|---|---|---|
#18+
Вот так работало, с другой коллекцией: Код: plsql 1.
Возможно, синтаксис выше некорректен. Цель: получить список id из коллекции в подзапросе, не прогоняя в цикле, по условию как выше. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2021, 13:23 |
|
Работа с коллекциями
|
|||
---|---|---|---|
#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.
Используй SQL типы. SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2021, 13:31 |
|
Работа с коллекциями
|
|||
---|---|---|---|
#18+
SY Используй SQL типы. Или пакетный тип (я лично предпочитаю не использовать ибо это все равно неявно создает системно-генерированные обьектный и коллекционные SQL типы): Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2021, 13:52 |
|
Работа с коллекциями
|
|||
---|---|---|---|
#18+
SY, а как же тогда select column_value from table(myCol) работало? И коллекция же заполняется в другом пакете - в самой процедуре ничего не расширяется и не добавляется. Заполнение делается select t.* bulk collect into ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2021, 13:54 |
|
Работа с коллекциями
|
|||
---|---|---|---|
#18+
Пакетные коллекции только для SELECT. Для non-query DML это не поддерживается. Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2021, 14:01 |
|
Работа с коллекциями
|
|||
---|---|---|---|
#18+
То же и с associative array: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2021, 14:04 |
|
Работа с коллекциями
|
|||
---|---|---|---|
#18+
SeaGate Пакетные коллекции только для SELECT. Для non-query DML это не поддерживается. Спасибо, не знал (видимо потому что предпочитаю не использовать ). SY, ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2021, 14:06 |
|
Работа с коллекциями
|
|||
---|---|---|---|
#18+
с associative array это явно указано: https://docs.oracle.com/database/121/LNPLS/release_changes.htm#GUID-57E439FB-B196-46CB-857C-0ADAB32D9EA0 авторIf the PL/SQL-only data type is an associative array, it cannot be used within a non-query DML statement (INSERT, UPDATE, DELETE, MERGE) nor in a subquery. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2021, 14:08 |
|
Работа с коллекциями
|
|||
---|---|---|---|
#18+
SY, Понял - только для SELECT... ясно. Может какой-то другой способ есть сделать нечто подобное? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2021, 14:15 |
|
Работа с коллекциями
|
|||
---|---|---|---|
#18+
ARRay001 Не совсем понял, получается, если коллекция заполняется в другом пакете по вызову тамошней процедуры, то уже не сработает? Только если заполнять построчно в той же процедуре? Или есть какой-то иной способ для этого случая? Где заполняется значения не имеет. Главное где определен тип - в пакете или нет. SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2021, 14:22 |
|
Работа с коллекциями
|
|||
---|---|---|---|
#18+
SY, Супер, только тогда смысла нет. Процедура заполнения всё равно в другом пакете и передавать между пакетами всё равно придётся... ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2021, 14:29 |
|
Работа с коллекциями
|
|||
---|---|---|---|
#18+
Проблем с передачей коллекций между пакетами в пределах одной БД нет. Передача между БД требует внимания, но тоже возможна. В топике не понятно только одно - нафига вообще применять DML к коллекциям? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2021, 14:48 |
|
Работа с коллекциями
|
|||
---|---|---|---|
#18+
andrey_anonymous, DML в примере применяется не к коллекции, коллекция служит только для выборки данных для DML. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2021, 21:44 |
|
Работа с коллекциями
|
|||
---|---|---|---|
#18+
ARRay001, Используйте forall ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2021, 02:05 |
|
|
start [/forum/topic.php?fid=52&tid=1880155]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
150ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
others: | 240ms |
total: | 477ms |
0 / 0 |