|
|
|
Использование функции в select
|
|||
|---|---|---|---|
|
#18+
Можно ли результат функции, возвращающей ref cursor, использовать в select? Что-то вроде select * from FunctionName(1,2,3) ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2003, 13:46 |
|
||
|
Использование функции в select
|
|||
|---|---|---|---|
|
#18+
Можно (и нужно) так: Код: plaintext Через ODAC/DOA/ADO результирующий курсор можно юзать так: Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2003, 13:54 |
|
||
|
Использование функции в select
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2003, 13:54 |
|
||
|
Использование функции в select
|
|||
|---|---|---|---|
|
#18+
Пробую использовать: select agency.bvd.get_balance_by_agency_with_op(null,'1.12.2001', 19344, null, 1, 0) from dual В ответ пишет: ORA-00902, invalid datatype В чем тут дело? Функция get_balance_by_agency_with_op в пакете BVD в схеме agency возвращает ref cursor. И еще. Обязятельно ли обьявлять тип 'Create Type' или все же можно не обьявлять? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2003, 14:05 |
|
||
|
Использование функции в select
|
|||
|---|---|---|---|
|
#18+
Функция должна возвращать один из типов данных sql-сервера (varchar2, number, date). ref cursor таковым не является. Не путайте типы данных PL/SQL и SQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2003, 14:16 |
|
||
|
Использование функции в select
|
|||
|---|---|---|---|
|
#18+
Новая попытка. select * from table(cast(Agency.get_balance_by_unit_with_op(377,'1.12.2001') as bvd_stock_table_type)); Пишет: ORA-22905, cannot access rows from a non-nested table item. Функция возвращает bvd_stock_table_type. Тут в чем дело? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2003, 14:29 |
|
||
|
Использование функции в select
|
|||
|---|---|---|---|
|
#18+
Ты не правильно используешь типы. Ты используешь непосредственно тип,который описывает таблицу( применительно к моему примеру pages_object), а нужно применять тип pages_table. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2003, 15:28 |
|
||
|
Использование функции в select
|
|||
|---|---|---|---|
|
#18+
мне тоже захотелось так попробовать но на строке t_pages(n):=v_pages; пишет ошибку - выражение неправильного типа ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2003, 12:12 |
|
||
|
Использование функции в select
|
|||
|---|---|---|---|
|
#18+
у меня девятка Oracle9i Enterprise Edition Release 9.2.0.3.0 - Production ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2003, 12:17 |
|
||
|
Использование функции в select
|
|||
|---|---|---|---|
|
#18+
Ты знаешь, именно в 9i - не получается. В 8 и 8i замечательно работает. В чём причина пока не знаю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2003, 12:24 |
|
||
|
Использование функции в select
|
|||
|---|---|---|---|
|
#18+
у меня девятка Oracle9i Enterprise Edition Release 9.2.0.3.0 - Production ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2003, 12:56 |
|
||
|
Использование функции в select
|
|||
|---|---|---|---|
|
#18+
то lilo а так получится? касательно ругательств на t_pages(n):=v_pages; ----------------------------------------------------------- CREATE OR REPLACE TYPE "OXA_OBJ" as object( ls varchar2(12), ..... mdim number(2) ) CREATE OR REPLACE TYPE "OXA_TAB" as table of oxa_obj --------------------------------------------------------- Попробуй так create or replace function COI_get_oxa2(housid in integer) return oxa_tab is lsd_obj oxa_obj; lsdvalue oxa_tab := oxa_tab(); n integer; begin lsd_obj := oxa_obj(null,null,null,null,null); инициализируем for lsd_cur in (select p.payerid,p.payercode, .... from payer p,payerinfo pi,flat f, house h,street s, agreetempl ag where ......) loop n:=n+1; lsdvalue.extend; lsd_obj.ls :=lsd_cur.payercode; ..... lsd_obj.mdim :=null; lsdvalue(lsdvalue.count) := lsd_Obj; присваиваем ..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2003, 21:57 |
|
||
|
Использование функции в select
|
|||
|---|---|---|---|
|
#18+
Почитал пост softbuilder@inbox.ru и это меня сподвигло на написание своего варианта: Код: plaintext 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. Цель функции Create_Date_Table, сформировать таблицу дат с DT1 по DT2 с шагом Step (в секундах). Пример использования: Код: plaintext 1. 2. 3. 4. В этом случае все работает просто великолепно! Но стоит изменить запрос хотя бы на следующий: Код: plaintext 1. 2. 3. 4. ... и все перестает работать... т.е. все записи равны первому значению. Может кто знает что ни так? P.S. Выборка "select H.DT1 from dual" конечно придена просто для примера, на самом деле здесь должена стоять выборка, например, суммы за период от H.DT1 до H.DT2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2003, 15:45 |
|
||
|
Использование функции в select
|
|||
|---|---|---|---|
|
#18+
План запроса надо смотреть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2003, 15:52 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=32131946&tid=1991061]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
158ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 204ms |
| total: | 454ms |

| 0 / 0 |
