Показаны сообщения с ярлыком Oracle 11g. Показать все сообщения
Показаны сообщения с ярлыком Oracle 11g. Показать все сообщения

воскресенье, 21 октября 2012 г.

Внешние таблицы + препроцессор

    Эту заметку пишу в качестве узелка на память.
    Дело в ом, что я уже довольно давно знаю о существовании в Oracle внешних таблиц. Очень удобного средства для перекидывания данных из CVS файлов в базу. Но только сегодня я узнал о существовании в Oracle 11.2 препроцессора, который может подготавливать данные для внешней таблицы посредством выполнения каких-либо программ на машине, где работает сервер базы данных.
    Ниже даю ссылки на описание работы с внешними таблицами и документ, в котором на основании простых примеров рассказывается как пользоваться препроцессором:
Внешние таблицы
Использование препроцессора с внешними таблицами

понедельник, 31 октября 2011 г.

Oracle Database 11g: Новые возможности в PL/SQL

    Для людей желающих прочитать про плюшки, которые есть в Oracle 11g рекомендую почитать этот документ. В нём представлен список новых фишек, которые есть в Oracle 11g
    Также есть замечательный вебсайт, но он на английском, где также можно прочитать о новых возможностях разных версий:

четверг, 19 мая 2011 г.

PIVOT и UNPIVOT в Oracle 11g

   В Oracle 11g появились новые функции, которые позволяют разворачивать таблицу. Здесь я приведу пример для быстрого понимания того, как это работает, в конце статьи дам ссылку на чуть более подробное объяснение того как это работает.

понедельник, 16 мая 2011 г.

Регулярные выражения в Oracle 11G



  Регулярные выражения являются очень полезным механизмом, многих языков программирования. До Версии 10g в Oracle регулярки не было, и приходилось обходиться обычными строковыми функциями поиска подстроки в строке, что было не всегда удобно. В 11g к уже существующим функциям по работе с регулярными выражениями добавилась ещё одна REGEXP_COUNT и расширился функционал 2х старых REGEXP_INSTR и REGEXP_SUBSTR.

вторник, 3 мая 2011 г.

Оператор Continue


Не знаю, многие ли слышали об этом, но в Oracle 11g появился оператор, который уже давно существует в других языках - Continue.
Суть у него проста, прервать текущую итерацию и перейти к следующей. Лично я серьёзно им никогда не пользовался, иногда применял в скриптовых языках, но дальше дело не доходило.
В любом случае, встречайте CONTINUE собственной персоной:
BEGIN
 FOR i IN 1..5 LOOP
   dbms_output.put_line('First statement, index is ['||i||'].');
    IF MOD(i,2) = 0 THEN
      CONTINUE;
    END IF;
   dbms_output.put_line('Second statement, index is ['||i||'].');
 END LOOP;
END;

First statement, index is [1].
Second statement, index is [1].
First statement, index is [2].
First statement, index is [3].
Second statement, index is [3].
First statement, index is [4].
First statement, index is [5].
Second statement, index is [5].

Алгоритм прост. Мы перебираем цифры от 1 до 5 и при помощи функции получения остатка от деления MOD проверяем их на чётность. Если остаток равен 0, то выполняем оператор CONTINUE, которые прерывает текущую итерацию и переходит к следующей, если число не чётное, то выполнение цикла продолжается дальше.

Подстановка текста подпрограмм (subprogram inlining) в Oracle 11g

В Oracle 11g появился новый механизм оптимизации программного кода - использование автоматической инлайн подстановки текста подпрограммы, вместо её вызова. При частых вызовах - эта штука очень хорошо позволяет экономить на накладных расходах. Надо заметить, что данный механизм работает только в случае выставления уровня оптимизации 2 и выше.