Воскресенье
20.09.2020
08:20


Форма входа


Приветствую Вас Гость | RSS
Статьи по ORACLE, PL/SQL, Java и немного по SHELL (BASH),...
Главная Каталог статей Регистрация Вход
Главная » Статьи » ORACLE » ORACLE, PL/SQL

Вставка в несколько таблиц одновременно
Задача
Требуется вставить строки, возвращенные запросом, в несколько таблиц. Например, необходимо вставить строки из таблицы DEPT в таблицы DEPT_EAST, DEPT_WEST и DEPT_MID. Структура всех трех таблиц (количество и типы столбцов) такая же, как и у DEPT, и в настоящий момент они пусты.
 
Решение
Решение – вставить результат запроса в необходимые таблицы. Отличие от «Копирования строк из одной таблицы в другую» состоит в том, что в данном случае имеется несколько таблиц на выходе.
Используйте выражения INSERT ALL (вставить во все) или INSERTFIRST (вставить в первую). Синтаксис обоих выражений одинаковый, кроме ключевых слов ALL и FIRST. В следующем примере используется выражение INSERT ALL, что обеспечивает вставку во все возможные таблицы:

insert all
when loc in ('NEW YORK','BOSTON') then
   into dept_east (deptno,dname,loc) values (deptno,dname,loc)
when loc = 'CHICAGO' then
   into dept_mid (deptno,dname,loc) values (deptno,dname,loc)
else
   into dept_west (deptno,dname,loc) values (deptno,dname,loc)
select deptno,dname,loc
from dept;


В Oracle для вставки данных в несколько таблиц используются блоки WHEN - THEN - ELSE, которые обеспечивают обработку строк, возвращаемых вложенным SELECT, и соответствующую их вставку. В примере данного рецепта выражения INSERT ALL and INSERT FIRST обеспечили бы один и тот же результат, но между ними есть отличие.
INSERT FIRST завершит вычисление WHEN - THEN - ELSE, как только условие будет выполнено; INSERT ALL проверит все условия, даже если предыдущие условия выполнены. Таким образом, INSERT ALL может использоваться для вставки одной строки в несколько таблиц.

Источник: Молинаро Э. "SQL. Сборник рецептов"
Категория: ORACLE, PL/SQL | Добавил: Akarak (11.11.2009)
Просмотров: 6030 | Рейтинг: 5.0/2
Всего комментариев: 0
Имя *:
Email *:
Код *:
Меню сайта

Категории раздела
ORACLE, PL/SQL [36]
Скрипты DDL [3]
Скрипты по управлению объектами
Встроенные функции SQL [2]
Встроенные функции SQL

Интересные сайты
  • sql.ru
  • all-oracle.ru
  • oranet.ru
  • oracloid.ru
  • forum.vingrad.ru

  • Статистика

    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0

    Поиск

    Copyright MyCorp © 2020
    Используются технологии uCoz