Функция LISTAGG (объединение строк)
LISTAGG упорядочивает данные, объединенные в группы конструкцией ORDER BY, затем соединяет указаный столбец measure_expr.

1) Как одиночная агрегатная функция, LISTAGG обрабатывает все строки и возвращает одно значение.
2) Как групповая агрегатная функция, LISTAGG обрабатывает и возвращает данные для каждой группы определенной в GROUP BY.
3) Как аналитическая функция, LISTAGG обрабатывает данные разбитые на блоки, задаваемые одним или несколькими выражениями query_partition_clause.
Пример агрегатной функции
SQL> select deptno, LISTAGG(t.ename, ', ') WITHIN GROUP (order by t.empno) as ename_list 2 from scott.emp t 3 group by deptno; DEPTNO ENAME_LIST ------ -------------------------------------------------------------------------------- 10 CLARK, KING, MILLER 20 SMITH, JONES, SCOTT, ADAMS, FORD, SMIT2 30 ALLEN, WARD, MARTIN, BLAKE, TURNER, JAMES
Пример аналитической функции
SQL> select deptno, 2 ename, 3 job, 4 hiredate, listagg(t.ename, ', ') 6 WITHIN GROUP(order by t.empno) over(partition by deptno) as ename_list 7 from scott.emp t 8 where hiredate > to_date('01-01-1982','dd-mm-yyyy'); DEPTNO ENAME JOB HIREDATE ENAME_LIST ------ ---------- --------- ----------- ----------------------- 10 MILLER CLERK 23.01.1982 MILLER 20 SCOTT ANALYST 09.12.1982 SCOTT, ADAMS, SMIT2 20 ADAMS CLERK 12.01.1983 SCOTT, ADAMS, SMIT2 20 SMIT2 CLERK 25.07.2011 SCOTT, ADAMS, SMIT2
Oracle Database SQL Language Reference 11g Release 2 : LISTAGG
Функции для работы с коллекциями
Рассмотрим функции для работы с 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
Информация о проектах (PA_PROJECTS_ALL)
Запрос для вывода информации о существующих проектах Oracle Projects.
Используется таблица PA_PROJECTS_ALL.
select ppa.project_id as project_id -- ID проекта , ppa.name as project_name -- Имя проекта , ppa.segment1 as project_num -- Номер проекта , ppa.project_type as project_type -- Тип проекта , pps.project_status_name as project_status -- Статус проекта , org.organization_id as org_id -- ID организации , org.name as org_name -- Имя организации , oper.organization_id as oper_id -- ID операционной единицы , oper.name as oper_name -- Имя операционной единицы , loc.city as loc_city -- Город, в котором ведется проект -- from pa_projects_all ppa -- список проектов , hr_all_organization_units org -- организация, которой принадлежит проект , hr_operating_units oper -- операционная единица , pa_locations loc -- расположение, где находится территориально , pa_project_statuses pps -- статус проекта where 1=1 -- org and org.organization_id = ppa.carrying_out_organization_id -- oper and ppa.org_id = oper.organization_id -- loc and loc.location_id = ppa.location_id -- pps and pps.project_status_code = ppa.project_status_code and pps.status_type = 'PROJECT' and sysdate between pps.start_date_active and nvl(pps.end_date_active,sysdate+1);
Список операционных единиц (HR_OPERATING_UNITS)
Запрос для вывода списка операционных единиц, используется view hr_operating_units.
select business_group_id, organization_id, name, date_from, date_to, short_code, set_of_books_id, default_legal_context_id, usable_flag from hr_operating_units;
Oracle Project (Проекты)
Информация об Oracle Project (Проекты) — описание основных таблиц, полезные запросы и примеры использования API.
По мере появления данных, буду добавлять информацию.
Основные таблицы Oracle Project, модуль PA.
Таблица | Описание |
PA_PROJECTS_ALL | Список проектов |
PA_PROJECT_ASSETS_ALL | Активы для проектов капитального строительства |
PA_PROJECT_CLASSES | Классификация проектов |
PA_CLASS_CATEGORIES | Категории классификаций |
PA_CLASS_CODES | Коды классификаций |
PA_PROJECT_ROLE_TYPES_B view pa_project_role_types |
Список ролей для назначения на проект |
PA_PROJECT_STATUSES | Список используемых статусов. Для PROJECT, DELIVERABLE, TASK, PROGRESS, STRUCTURE и т.д. |
PA_PROJECT_TYPES_ALL | Тип проекта |
PA_TRANSACTION_INTERFACE_ALL | Интерфейсная таблица для импорта транзакций из внешних источников |
PA_IMPLEMENTATIONS_ALL | Информация о конфигурации установки |
PA_BUDGET_LINES | Строки бюджета |
PA_BUDGET_VERSIONS | Версии бюджета |
PA_BUDGET_TYPES | Тип бюджета |
PA_EXPENDITURES_ALL | Группы статей расходов |
PA_EXPENDITURE_CATEGORIES | Категории затрат |
PA_EXPENDITURE_TYPES | Типы затрат |
PA_EXPENDITURE_ITEMS_ALL | Информация о расходах для проектов и задач |
PA_PERIODS_ALL | Периоды |
PA_RESOURCES | Список ресурсов |
PA_PROJ_ELEMENTS | Объекты рабочего плана — задачи, позиции поставки, структура |
PA_PROJ_ELEMENT_VERSIONS | Версии объектов рабочего плана |
PA_STRUCTURE_TYPES | Тип структуры |
PA_PROJ_ELEM_VER_STRUCTURE | Версия структуры |
PA_CONVERSION_TYPES_V | Тип курса |
PA_COST_DISTRIBUTION_LINES_ALL | Распределение затрат расходных статей |
JBO-25009: Невозможно создать объект типа:oracle.jbo.domain.Number
Если вы столкнулись с ошибкой JBO-25009, то вот вариант как ее быстро и успешно победить.
Получил ошибку на странице OAF:
US: JBO-25009: Cannot create an object of type:oracle.jbo.domain.Number
RU: JBO-25009: Невозможно создать объект типа:oracle.jbo.domain.Number
Решение:
На странице присутствовало поле xBean (тип messageChoice);
связанное с атрибутом ViewObject типа NUMBER.
Тип поля xBean был VARCHAR2, заменил его на NUMBER и все заработало успешно.
Удаление папок SVN
Для удаления скрытых файлов и папок SVN нам поможет следующий батник (windows):
rem Если надо указать конкретную дирректорию, то используем закомментированный вариант rem for /d /r "%1" %%d in (.svn) do @if exist "%%d" rd /s/q "%%d" rem Удаляем svn файлы начиная с текущей директории for /d /r "." %%d in (.svn) do @if exist "%%d" rd /s/q "%%d"
Создание bat файла:
1) Создаём новый файл с расширение «bat». Например, «clear_svn.bat».
2) Помещаем созданный файл в каталог, который хотим почистить от svn файлов (поддерживается рекурсивное удаление) и запускаем его.
3) Все файлы svn удалены.
Регистрация view в OEBS
Если зарегистрировать view в OEBS, указав следующие столбцы
- START_DATE_ACTIVE
- END_DATE_ACTIVE
- ENABLED_FLAG
, то при использовании данной view в наборе значений автоматически будут отсекаться устаревшие данные.
Для регистрации view в OEBS, используем следующий скрипт.
Читать дальше про “Регистрация view в OEBS” »
Скрипт копирования аттачмент функции
Если, при кастомизации стандартной формы OEBS, возникает необходимость сохранить функциональность аттачментов, то реализовать это поможет следующий скрипт:
Как создать ярлык для инстанса OEBS
Довольно удобно для входа в OEBS использовать ярлык с сохраненным логином.
Создаётся такой ярлык довольно просто:
1) Заходим на инстанс

Последние комментарии