|
|
|
TYPE ... IS TABLE OF ...%ROWTYPE, да как же это делается-то наконец!!!
|
|||
|---|---|---|---|
|
#18+
Перед праздниками открыл топик "курсорная переменная - ошибка "fetch out of sequence"", многое прояснилось, но вопрос так и не столкнул до сих пор! Суть же проблемы такова: нужно извлечь из базы набор строк, сделать с ними определенные манипуляции (изменить по условию значение некоторых полей) и затем отдать на "растерзание" этот набор клиентской программе. Из советов форумщиков и чтива "PL/SQL Collections and Records" сложилось решение, делать надо так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. но не тут-то было, так не работает, почему же тогда работает так: Код: plaintext 1. 2. 3. 4. 5. 6. Все дело в том, что мне нужны в коллекции строки таблицы, а не отдельный столбец! Как же быть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2003, 11:46 |
|
||
|
TYPE ... IS TABLE OF ...%ROWTYPE, да как же это делается-то наконец!!!
|
|||
|---|---|---|---|
|
#18+
Да пойми же, что pl/sql-таблица и объектный тип-таблица - это две большие разницы, и работать с ними надо по-разному. То, что с обоими ты можешь работать как с массивами, используя методы FIRST, LAST и иже с ними, пусть тебя не смущает. На этом их сходство заканчивается. Из pl/sql-таблицы открыть курсор ты не сможешь, нет сейчас такого синтаксиса. Право, в предыдущем топике ты взял работающий, но некрасивый пример, и, подставив pl/sql-таблицу вместо объектного типа, получил пример "красивый", но неработающий. Заполнение pl/sql-таблицы можно оформить так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. Но на этом ты и остановишся, дальше- читай в документации все, что связано с Object Types, Object Tables, особенно в Oracle9i Application Developer's Guide - Object-Relational Features ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2003, 12:20 |
|
||
|
TYPE ... IS TABLE OF ...%ROWTYPE, да как же это делается-то наконец!!!
|
|||
|---|---|---|---|
|
#18+
да, прошу прощения, но мне все как-то не верится.. Однако насчет заполнения таблицы pl/sql: но все равно же такой пример не работает (тот который ты написал)! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2003, 13:23 |
|
||
|
TYPE ... IS TABLE OF ...%ROWTYPE, да как же это делается-то наконец!!!
|
|||
|---|---|---|---|
|
#18+
Может быть эта фича зависит от версии оракла, я проверял на Oracle9i Enterprise Edition Release 9.2.0.1.0. По-моему в 8i подобное еще невозможно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2003, 13:37 |
|
||
|
TYPE ... IS TABLE OF ...%ROWTYPE, да как же это делается-то наконец!!!
|
|||
|---|---|---|---|
|
#18+
ну вот, плюс ко всем бедам еще и версия подвела.. :( все, вобчем подвожу итог собственным мытарствам: реализовать некую временную таблицу, которая суть выборка, а затем произвести какие-либо манипуляции по этой таблице и вернуть в итоге клиентской проге - представляется плохо реализуемым. Вариант с объектной таблицей плох уж тем, что в ней надо заново описывать каждое поле таблицы, а реализация %rowtype - не реализуется (каламбур, блин). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2003, 13:53 |
|
||
|
TYPE ... IS TABLE OF ...%ROWTYPE, да как же это делается-то наконец!!!
|
|||
|---|---|---|---|
|
#18+
>> Может быть эта фича зависит от версии оракла, я проверял на Oracle9i Enterprise Edition Release 9.2.0.1.0. По-моему в 8i подобное еще невозможно. по поводу %rowtype (Oracle8i Enterprise Edition Release 8.1.7.4.1) ... You cannot bulk-fetch from a cursor into a collection of records, as the following example shows: DECLARE TYPE DeptRecTab IS TABLE OF dept%ROWTYPE; dept_recs DeptRecTab; CURSOR c1 IS SELECT deptno, dname, loc FROM dept WHERE deptno > 10; BEGIN OPEN c1; FETCH c1 BULK COLLECT INTO dept_recs; -- illegal ... END; ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2003, 14:02 |
|
||
|
|

start [/forum/topic.php?fid=52&tid=1990640]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
46ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 201ms |
| total: | 323ms |

| 0 / 0 |
