Архив

Архив автора

API добавления полномочия для пользователя

3 Ноябрь 2011 2 comments

С помощью данного API можно добавить полномочие пользователю

begin
  -- Call the procedure
  fnd_user_pkg.addresp(username       => :username,
                       resp_app       => :resp_app,
                       resp_key       => :resp_key,
                       security_group => :security_group, -- в основном 'STANDARD'
                       description    => :description,    -- любой коммент
                       start_date     => :start_date,
                       end_date       => :end_date);
  commit;                    
  dbms_output.put_line('Responsibility Added Successfully');
exception
 when others then
   dbms_output.put_line(' Responsibility is not added due to ' 
                        || substr(SQLERRM, 1, 100));
   rollback;
end;

И весьма полезный скрипт, c помощью которого можно быстро перетянуть полномочия с одного инстанса на другой.
Читать дальше про “API добавления полномочия для пользователя” »

Как посмотреть OPP service log

При выполнении concurrent request в Oracle E-business suite, который строится с использованием XML Publisher, можно столкнуться с тем что concurrent завершается со статусом Warning.

В логе будет следующая запись:

+————- 1) PUBLISH ————-+
Запуск заключительной обработки запроса 565518 в узле PART4: 03-НОЯ-2011 10:37:15.
Ошибка заключительной обработки запроса 565518: 03-НОЯ-2011 10:37:15. Сообщение об ошибке:
One or more post-processing actions failed. Consult the OPP service log for details.
+—————————————+

Эта запись говорит о том, что по каким-то причинам не смог прицепиться шаблон отчета.

Читать дальше про “Как посмотреть OPP service log” »

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

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 20 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;