Архив

Архив автора

Иерархия организаций

28 Октябрь 2011 Нет комментариев

Запрос для вывода иерархии организаций.
Список существующих иерархий можно увидеть в таблице hr.per_organization_structures.

 SELECT LPAD(' ', 10 * (LEVEL - 1)) || org.name hierarchy,
       org.organization_id
  FROM hr_all_organization_units org, per_org_structure_elements pose
 WHERE 1 = 1
   AND org.organization_id = pose.organization_id_child
   AND pose.org_structure_version_id = &p_structure_version_id
-- START WITH org.organization_id =
CONNECT BY PRIOR pose.organization_id_child = pose.organization_id_parent
 ORDER SIBLINGS BY org.location_id, pose.organization_id_child;

Информация о сотруднике

28 Октябрь 2011 Нет комментариев

ОЕБС Информация о сотруднике
Запрос выводит информацию о сотруднике, основная таблица fnd_user.

SELECT u.user_id           as user_id
     , u.user_name         as user_name
     , pap.full_name       as emp_name
     , pap.employee_number as emp_number
     , pj.name             as job_name
     --
FROM fnd_user          u
   , per_all_people_f  pap
   , per_assignments_f paf
   , per_jobs          pj
WHERE 1=1
      --and u.user_id = fnd_global.user_id
      and u.employee_id = pap.person_id(+)
      and sysdate between pap.effective_start_date(+) and pap.effective_end_date(+)
      -- per_assignments_f
      and paf.person_id (+) = pap.person_id
      and sysdate between paf.effective_start_date(+) and paf.effective_end_date(+)
      and paf.primary_flag(+) = 'Y'
      -- per_jobs
      and pj.job_id(+) = paf.job_id;

Замена N-ного символа в строке

28 Октябрь 2011 2 comments

Для замены N-ного символа в строке, можно обойтись и без SUBSTR — использовать REGEXP_REPLACE.

select regexp_replace('208010100000','.','X', 5, 1) as res from dual
union all
select regexp_replace('208010100000','.','X', 2, 1) as res from dual;

RES
------------
2080X0100000
2X8010100000

SVN Keywords

27 Октябрь 2011 Нет комментариев

SVN

В TortoiseSVN есть удобная возможность использовать ключевые слова.

Например, указав в тексте $Id$, можно получить следующую строку:
«$Id: start_test.sh 1217 2011-10-27 13:26:02Z Ivanov $»

При желании, мы можем использовать данную возможность в объектах БД для отслеживания авторства и версионности.  Все ключевые слова являются регистрозависимыми, вставляются в код следующим образом: $keyword$.

Date — описывает дату последнего изменения файла в репозитории
Revision – отображает ревизию последнего изменения файла в репозитории
Author – отображает автора последних изменений в репозитории
HeadURL – отображает URL на последнюю версию файла в репозитории
Id – предоставляет комбинированную информацию из предыдущих ключевых слов

Для активации keywords, заходим в конфигурационный файл:
— в разделе[miscellany] раскомментируем enable-auto-props = yes
— в разделе [auto-props] добавляем строку
*.* = svn:keywords=LastChangedDate LastChangedRevision LastChangedBy HeadURL Id Date Revision Author

После этого, все новые файлы будут учитывать ключевые слова при commit. Если же хотим добавить keywords для уже существующих файлов, то добавляем их через свойства TortoiseSVN для каждого файла.

SVN Свойства файла

Categories: Others Tags: ,

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

20 Сентябрь 2011 16 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 и все заработало успешно.