Архив

Публикации с меткой ‘collect’

Функции для работы с коллекциями

19 Сентябрь 2011 Нет комментариев

Рассмотрим функции для работы с nested tables и varrays (11G)

Сделаем nested tables для примеров:

create or replace type test_number_table as table of number(20);

CARDINALITY

CARDINALITY возвращает число элеметов в nested table. Тип возращаемого значения NUMBER.
Если вложенная таблица пустая или is null, тогда CARDINALITY вернет NULL.

SQL> select CARDINALITY(test_number_table(1,2,3,4,5,1,2)) as t_cardinality from dual;

T_CARDINALITY
-------------
            7

Читать дальше про “Функции для работы с коллекциями” »

Создать дубликаты строк

with t as
(
  select 'a' a, 2 n from dual union all
  select 'b' a, 3 n from dual union all
  select 'c' a, 5 n from dual union all
  select 'd' a, 1 n from dual union all
  select 'e' a, 0 n from dual
)
select *
 from t,
      table(select collect(level) from dual connect by level<=t.n);

A          N COLUMN_VALUE
- ---------- ------------
a          2            1
a          2            2
b          3            1
b          3            2
b          3            3
c          5            1
c          5            2
c          5            3
c          5            4
c          5            5
d          1            1
e          0            1

12 rows selected

При n=0, строка останется.

Читать дальше про “Создать дубликаты строк” »