Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Вывод данных из коллекции / 12 сообщений из 12, страница 1 из 1
31.08.2017, 13:40
    #39513435
ioserg2018
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод данных из коллекции
Добрый день
Ситуация такая:
есть таблица, где поле имеет пользвательский тип:
Код: plsql
1.
2.
select SCHEDULED_OPERATIONS
from OPERATION_SCHEDULE


в интернете нашёл обертку для этого типа поля:
Код: plsql
1.
select * from tables (SCHEDULED_OPERATIONS.items)


Но почему-то не работает эта обертка.

В чем может быть проблема? И как вывести все данные для этого типа поля?

Мне нужно эти данные связать потом с таблицей по ID, который хранится в этом поле
...
Рейтинг: 0 / 0
31.08.2017, 13:58
    #39513448
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод данных из коллекции
...
Рейтинг: 0 / 0
31.08.2017, 14:15
    #39513461
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод данных из коллекции
ioserg2018Добрый день
Ситуация такая:
есть таблица, где поле имеет пользвательский тип:

под "пользвательский тип" может скрыватся что угодно

покажите структуру таблицы
desc OPERATION_SCHEDULE

зы
для красоты можно задать
set describe depth all linenum on indent on
....
stax
...
Рейтинг: 0 / 0
31.08.2017, 14:19
    #39513463
ioserg2018
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод данных из коллекции
Stax,

структура таблицы:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
STATUS CHAR, 
OPERATION_SCHEDULE_ID NUMBER, 
OPERATION_ID NUMBER, 
SCHEDULE_TYPE VARCHAR2 (4), 
SCHEDULE_TYPE_VALUE NVARCHAR2 (384), 
STARTDATE DATE, 
ENDDATE DATE, 
SCHEDULED_OPERATIONS TSCHEDULEDOPERATION#VARRAY, 
PARAMETERS VARCHAR2 (4000), 
CREATED DATE, 
UPDATED DATE


Тип TSCHEDULEDOPERATION#VARRAY:
Код: plsql
1.
CREATE OR REPLACE Type TScheduledOperation#VArray is VArray(256) Of TScheduledOperation


Тип TScheduledOperation:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
CREATE OR REPLACE Type TScheduledOperation AS Object (
  TaskId             Number,
  ScheduleDate       Date,
  CreatingDate       Date,
  CompletionDate     Date,
  Amount             Number(10,2),
  ExtParam           Varchar2(32),
  CreatedOperationId        Number,
  CreatedOperationStatusId  Number
)


Как-то так
Как теперь можно вывести колонки типа TScheduledOperation и сделать с ними join из другой таблицы?
...
Рейтинг: 0 / 0
31.08.2017, 14:40
    #39513475
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод данных из коллекции
ioserg2018,

упростил структуры (лень набивать тест)

Код: 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.
SQL> desc OPERATION_SCHEDULE
           Name                            Null?    Type
           ------------------------------- -------- ----------------------------
    1      ID                                       NUMBER(38)
    2      SCHEDULED_OPERATIONS                     T#VARRAY
    3    2   TASKID                                 NUMBER
    4    2   AMOUNT                                 NUMBER(10,2)
    5    2   EXTPARAM                               VARCHAR2(32)

SQL> select * from OPERATION_SCHEDULE;

        ID
----------
SCHEDULED_OPERATIONS(TASKID, AMOUNT, EXTPARAM)
--------------------------------------------------------------------------------
         1
T#VARRAY(TSCHEDULE(1, 100,01, '111'), TSCHEDULE(2, 100,02, '222'))

         2
T#VARRAY(TSCHEDULE(3, 200,21, 'xxx'), TSCHEDULE(4, 200,22, 'yyy'))


SQL> with t as (
  2  select 1 id_ref,'Stax' n from dual union all
  3  select 2 id_ref,'Tahiti' n from dual union all
  4  select 3 id_ref,'OraDoc' n from dual union all
  5  select 4 id_ref,'ioserg2018' n from dual
  6  )
  7  select
  8   t.n
  9  ,o.ID
 10  ,a.TASKID
 11  ,a.AMOUNT
 12  ,a.EXTPARAM
 13  from OPERATION_SCHEDULE o,table(o.SCHEDULED_OPERATIONS) a,t
 14  where t.id_ref=a.taskid
 15  /

N                  ID     TASKID     AMOUNT EXTPARAM
---------- ---------- ---------- ---------- --------------------------------
Stax                1          1     100,01 111
Tahiti              1          2     100,02 222
OraDoc              2          3     200,21 xxx
ioserg2018          2          4     200,22 yyy

SQL>




.....
stax
...
Рейтинг: 0 / 0
01.09.2017, 08:52
    #39513811
Озо
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод данных из коллекции
Магистр под новым ником писать начал?
...
Рейтинг: 0 / 0
01.09.2017, 17:04
    #39514228
biktimirov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод данных из коллекции
ioserg2018Добрый день
Ситуация такая:
есть таблица, где поле имеет пользвательский тип:
Код: plsql
1.
2.
select SCHEDULED_OPERATIONS
from OPERATION_SCHEDULE


в интернете нашёл обертку для этого типа поля:
Код: plsql
1.
select * from tables (SCHEDULED_OPERATIONS.items)


Но почему-то не работает эта обертка.

В чем может быть проблема? И как вывести все данные для этого типа поля?

Мне нужно эти данные связать потом с таблицей по ID, который хранится в этом поле
Так что ли к примеру тебе надо?
Код: plsql
1.
2.
3.
4.
select *
       from table (select os.scheduled_operations 
                          from OPERATION_SCHEDULE os
                          where os.operation_schedule_id = 442) t
...
Рейтинг: 0 / 0
13.09.2017, 09:58
    #39520245
RMagistr2015
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод данных из коллекции
biktimirovioserg2018Добрый день
Ситуация такая:
есть таблица, где поле имеет пользвательский тип:
Код: plsql
1.
2.
select SCHEDULED_OPERATIONS
from OPERATION_SCHEDULE


в интернете нашёл обертку для этого типа поля:
Код: plsql
1.
select * from tables (SCHEDULED_OPERATIONS.items)


Но почему-то не работает эта обертка.

В чем может быть проблема? И как вывести все данные для этого типа поля?

Мне нужно эти данные связать потом с таблицей по ID, который хранится в этом поле
Так что ли к примеру тебе надо?
Код: plsql
1.
2.
3.
4.
select *
       from table (select os.scheduled_operations 
                          from OPERATION_SCHEDULE os
                          where os.operation_schedule_id = 442) t



А какая разница между приведённой записью и данной:
Код: plsql
1.
2.
3.
4.
select value(c)
    from table(select p.preferences$.Items
                    from profile p
                    where p.profile_id=440) c
...
Рейтинг: 0 / 0
13.09.2017, 10:08
    #39520249
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод данных из коллекции
RMagistr2015,

Документацию, как обычно читать не пробовал?

VALUE
VALUE takes as its argument a correlation variable (table alias) associated with a row of an object table and returns object instances stored in the object table
...
Рейтинг: 0 / 0
13.09.2017, 10:45
    #39520284
RMagistr2015
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод данных из коллекции
env,

Не жди что я скажу тебе спасибо, ты по прежнему в игноре
...
Рейтинг: 0 / 0
13.09.2017, 12:25
    #39520359
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод данных из коллекции
RMagistr2015,

Ты серьёзно считаешь, что благодарность паразита кому-то важна?
Доку лучше читать учись и головой думать. Пользы больше будет, чем от создания одних и тех же тем под разными никами.
...
Рейтинг: 0 / 0
13.09.2017, 13:04
    #39520404
RMagistr2015
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод данных из коллекции
env,

а мне плевать, важна она тебе или нет, не жди и все, ты без благодарности
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Вывод данных из коллекции / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]