вторник, 28 января 2014 г.

Сводные таблицы в Oracle 11g

Предположим, нам нужно узнать количество таблиц, вью и триггеров у пользователей БД SYS, SYSTEM и SCOTT. Первым приходит в голову такое решение:

SQL> SELECT owner, object_type, count(*)
     FROM all_objects
     WHERE object_type IN ('TABLE', 'VIEW', 'TRIGGER')
         AND owner IN ('SYS', 'SYSTEM', 'SCOTT')
     GROUP BY owner, object_type
     ORDER BY owner, object_type;

OWNER                OBJECT_TYPE             COUNT(*)
-------------------- -------------------- -----------
SCOTT                TABLE                          4
SYS                  TABLE                        998
SYS                  TRIGGER                       10
SYS                  VIEW                        3865
SYSTEM               TABLE                        157
SYSTEM               TRIGGER                        2
SYSTEM               VIEW                          12

7 rows selected

Что ж, мы получили ответ на наш вопрос. Но результат не нагляден. Куда нагляднее был бы такой ответ:

OBJECT_TYPE                 SYS     SYSTEM      SCOTT
-------------------- ---------- ---------- ----------
TRIGGER                      10          2          0
TABLE                       998        157          4
VIEW                       3865         12          0

воскресенье, 19 января 2014 г.

Считаем до 1000... на пальцах

Как показано в предыдущих статьях, можно вести счет и запись чисел не только привычными всем десятками, но и "однннадцатками" (Всемирный заговор девятипалых), пятерками или шестерками (До скольки можно посчитать на пальцах?). Иными словами, помимо привычной нам десятичной системы счисления, где счет идет на десятки, существуют и другие системы счисления, где в качестве основания выбрано не десять, а другое число.

При этом число, выбранное в качестве основания системы счисления, определяет, сколько разных значений может принимать один разряд числа, тем самым задавая вес разряда в данной системе счисления.

воскресенье, 12 января 2014 г.

Пользовательские агрегатные функции в Oracle

СУБД Oracle, начиная с версии 8, предоставляет ряд программных интерфейсов для создания расширений (extensibility interfaces). Реализации этих интерфейсов могут быть написаны пользователями СУБД. В частности, это интерфейсы для создания расширений индексирования, расширений стоимостного оптимизатора, пользовательских агрегатных функций.

На базе этих программных интерфейсов компанией Oracle созданы и распространяются вместе с СУБД такие функциональные расширения, как Oracle Text, Oracle Multimedia и Oracle Spatial. Эти расширения Oracle именует data cartridges, а соответствующая технология называется Oracle Data Cartriges (ODC).

Теперь, обрисовав контекст, приступаю к созданию пользовательской агрегатной функции.