Вставка записей в таблицу с одновременной проверкой и изменением в случае наличия записи в принимающей таблице MERGE в Oracle (MERGE INTO TABLE)

MERGE — Функция предназначенная для объединения результата некоторой выборки в принимающую таблицу, при этом вовсе не обязательно чтобы состав полей совпадал.

Применяется когда необходимо дополнить некоторую таблицу новыми данными, одновременно обновив уже имеющиеся в таблице данные.

Реализация:
merge into таблица_приемник t1
      using (select * from таблица_источник) t2
      on (t1.id = е2.id and t1.parent_id = t2.parent_id)
      when matched then 
	-- Обновляем если совпадение в таблице t1 найдено
        update 
         set t1.info = t2.info
      when not matched then 
	-- Добавляем если совпадение в таблице t1 не найдено
        insert 
         (t1.id, t1.parent_id, t1.info)
         values
         (t2.id, t2.parent_id, t2.info);


Вот и всё.

Вопросы приветствуются.

Функции AES_ENCRYPT и AES_DECRYPT в MySQL

Функции AES_ENCRYPT() и AES_DECRYPT() производят симметричную шифровку и дешифровку данных с использованием алгоритма AES (Advanced Encryption Standard), при этом используется кодирование с 128-битным ключом. Есть возможность расширить до 256-бит, но как стандарт в MySQL выбран 128-битный, как достаточный по надёжности и более быстрый.

Синтаксис функций:
AES_ENCRYPT('Шифруемая строка','Ключ');
AES_DECRYPT('Дешифруемая строка','Ключ');
--Входные параметры AES_ENCRYPT() могут быть любой длины.
--Если любой из входных параметров равен NULL - то и результат выполнения тоже будет NULL.
--Ключ в AES_DECRYPT() должен совпадать с ключом в AES_ENCRYPT().


Приведем рабочий пример работы с функциями:
Читать дальше →

XML в Oracle PL/SQL (Часть 2 - Выборки в виде XML)

В предыдущей публикации были рассмотрены некоторые приёмы манипуляции с XML в Oracle, теперь рассмотрим как делать выборку данных напрямую в XML. Это на мой взгляд самая интересная часть.

На практике выяснилось, что для Oracle в большинстве случаев не существенно, вернуть ли набор записей или сформированную готовую XML этого набора записей — по времени выполнения эти действия субъективно практически равноценны. Но вот если у вас есть потребность в формировании некоторой XML структуры в приложении на основе данных полученных из БД Oracle, практически наверняка это будет довольно ресурсоемкое мероприятие, гораздо легче переложить этот функционал на базу данных, хотя на первый взгляд и кажется что это не то, чем должен заниматься движок базы данных.

Читать дальше →

Работа с XML в Oracle PL/SQL (Часть 1)

В этой публикации я приведу основные способы работы с XML в Oracle, которые сам использую.

Здесь будут рассмотрены на примерах такие операторы и функции как: XMLType, XMLElement, xmlattributes, XMLAGG, XMLSequence, insertchildxml, xmlconcat.

Итак начнем с объявления переменной в которой будем хранить текст XML.
Делается это так:
declare
  --Задаем переменную
  my_var XMLType;
begin
  --Присваиваем значение нашей переменной
  my_var:= XMLType('<root><item>Просто пробуем XML в Oracle</item></root>');
  --Выводим в вывод
  dbms_output.put_line(my_var.GetClobVal());
end;


Для начала рассмотрим некоторые приёмы работы с XML, чуть позже перейдем к генерации XML из данных при выборке.

Читать дальше →

Oracle - Выбираем все пользовательские таблицы с полями и комментариями.

Для того, чтобы написать скрипт выбора всех пользовательских таблиц с полями и комментариями нам понадобятся системные таблицы:

user_tables
--Выбираем все пользовательские таблицы и их параметры
select * from user_tables


user_tab_comments
--Выбираем комментарии к пользовательским таблицам
select * from user_tab_comments


user_tab_columns
--Выбираем все поля и их параметры по пользовательским таблицам
select * from user_tab_columns


user_col_comments
--Выбираем комментарии к полям пользовательских таблиц
select * from user_col_comments


Читать дальше →

Функция Oracle TO_NUMBER (PL/SQL)

Функция TO_NUMBER — преобразует строковое значение в числовое (NUMBER)

Синтаксис:
TO_NUMBER(исходная_строка, Формат, NLS_LANGUAGE);
--Последний параметр NLS_LANGUAGE (как я понимаю для задания кодировки) мне не разу не пригодился.


Читать дальше →

Функция Oracle TO_DATE (PL/SQL)

Функция TO_DATE — преобразует строку в переменную времени DATE.

Синтаксис:
TO_DATE(исходная_строка, Формат, NLS_LANGUAGE);
--Последний параметр NLS_LANGUAGE (как я понимаю для задания кодировки) мне не разу не пригодился.


Читать дальше →

Функция Oracle TO_CHAR (PL/SQL)

Функция TO_CHAR — преобразует дату или число в строку.

Синтаксис:
TO_CHAR(исходное_значение, Формат, NLS_LANGUAGE);
--В качестве исходного значения может быть передана как дата <strong>DATE</strong> так и число <strong>NUMBER</strong>.
--Последний параметр NLS_LANGUAGE (как я понимаю для задания кодировки) мне не разу не пригодился.


Читать дальше →

Работа со строками в Oracle (PL/SQL)

Основные способы обработки строковых значений в Oracle.
В этой публикации я приведу основные функции работы со строками которые встречались мне в работе, и будут полезны всем кто работает с Oracle.

CONCAT — Объединяет две строки
SQL> select concat('Пётр ','первый') from dual;
 
CONCAT('ПЁТР','ПЕРВЫЙ')
-----------------------
Пётр первый


Читать дальше →