Функция LISTAGG (объединение строк)

20 Сентябрь 2011 18 comments

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

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

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

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

Информация о проектах (PA_PROJECTS_ALL)

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

Запрос для вывода информации о существующих проектах 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)

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

Запрос для вывода списка операционных единиц, используется 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 (Проекты)

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

Информация об 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 Распределение затрат расходных статей
Categories: oracle, Oracle e-Business Suite Tags: , , ,

JBO-25009: Невозможно создать объект типа:oracle.jbo.domain.Number

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

Если вы столкнулись с ошибкой 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

14 Сентябрь 2011 3 comments

Для удаления скрытых файлов и папок 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 удалены.

Categories: Others Tags: ,

Регистрация view в OEBS

9 Сентябрь 2011 1 комментарий


Если зарегистрировать view в OEBS, указав следующие столбцы

  • START_DATE_ACTIVE
  • END_DATE_ACTIVE
  • ENABLED_FLAG

, то при использовании данной view в наборе значений автоматически будут отсекаться устаревшие данные.

Для регистрации view в OEBS, используем следующий скрипт.
Читать дальше про “Регистрация view в OEBS” »

Скрипт копирования аттачмент функции

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


Если, при кастомизации стандартной формы OEBS, возникает необходимость сохранить функциональность аттачментов, то реализовать это поможет следующий скрипт:

Читать дальше про “Скрипт копирования аттачмент функции” »

Как создать ярлык для инстанса OEBS

8 Сентябрь 2011 3 comments

Довольно удобно для входа в OEBS использовать ярлык с сохраненным логином.
Создаётся такой ярлык довольно просто:

1) Заходим на инстанс

Вход на инстанс OEBS

Читать дальше про “Как создать ярлык для инстанса OEBS” »

Categories: Oracle e-Business Suite Tags: