Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
05 приложение - SQL Plus - win.doc
Скачиваний:
11
Добавлен:
17.08.2019
Размер:
762.88 Кб
Скачать

Команды repheader и repfooter

Команды REPHEADER и REPFOOTER позволяют задать текст, выдаваемый в начале и в конце каждого отчета, соответственно. При этом используются те же спецификации печати, что и в командах BTITLE и TTITLE (см. табл. 11 выше). Команды имеют следующий синтаксис:

<команда REPHEADER> ::=

REP[HEADER] [PAGE] [<спецификации печати>    <текст или переменная>{ <текст или переменная>}] [<вкл-выкл>]

<команда REPFOOTER> ::=

REP[FOOTER] [PAGE] [<спецификации печати>    <текст или переменная>{ <текст или переменная>}] [<вкл-выкл>]

Если указана опция PAGE, то соответствующий текст выдается на отдельной странице.

При вызове без параметров эти команды выдают текущий формат и признак вывода текста в начале и в конце отчета.

Копирование данных из одной базы данных в другую

Утилита SQL*Plus предлагает собственные средства копирования данных из одной базы данных в другую и из одной таблицы в другую. Для этого используется команда COPY, которая позволяет:

  • копировать данные с удаленной базы данных в текущую;

  • копировать данные из текущей базы данных на удаленную;

  • копировать данные из одной удаленной базы данных в другую.

Примечание

В общем случае, предполагалось копирование данных между базой данных Oracle и базой данных другого производителя. В среде Oracle для копирования данных можно использовать SQL-операторы (CREATE TABLE AS и INSERT).

Команда COPY имеет следующий синтаксис:

<команда COPY> ::=

COPY <направление копирования> <действие копирования>    <имя целевой таблицы> [(<имя столбца>{, <имя столбца>})] USING <запрос>

<направление копирования> ::=

FROM <база данных>   | TO <база данных>   | FROM <база данных> TO <база данных>

<база данных> ::=

<имя пользователя>[/<пароль>]@<строка связи>

<действие копирования> ::=

APPEND | CREATE | INSERT | REPLACE

Она копирует данные, возвращаемые запросом, в таблицу в локальной или удаленной базе данных. Поддерживаются только базовые типы данных (CHAR, DATE, LONG, NUMBER, VARCHAR2) и в будущих версиях (после 9.0.1) поддержка этой команды не гарантируется.

Если в конструкции <база данных> пароль не указан, SQL*Plus запросит его перед выполнением команды.

Действия копирования описаны в табл. 12.

Таблица 12. Действия копирования команды COPY.

Действие

Описание

APPEND

Вставляет возвращенные запросом строки в целевую таблицу, если она существует. Если же таблица не существует, она создается.

CREATE

Вставляет возвращенные запросом строки в целевую таблицу, предварительно создавая ее. Если же таблица уже существует, возвращается сообщение об ошибке.

INSERT

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

REPLACE

Заменяет целевую таблицу и ее содержимое строками, возвращенными запросом. Если целевая таблица не существует, она создается. В противном случае, существующая таблица удаляется и вместо нее создается новая, содержащая скопированные данные.

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

По умолчанию, утилита SQL*Plus выполняет фиксацию транзакции после успешного завершения команды COPY. Если выполнить команду SET COPYCOMMIT n, где n - положительное целое число, фиксация будет выполняться после каждого n-го пакета записей. Размер пакета задается с помощью команды SET ARRAYSIZE.

Вся команда COPY должна поместиться на одной строке. Если необходимо перенести команду на следующую строку в конце строки необходимо ввести дефис (-).

Рассмотрим простой пример копирования таблицы:

SQL> copy from scott/tiger@training -

> create emp10 -

> using select * from emp where deptno = 10;

Размер массива выборки/привязки равен 15. (arraysize равен 15)

Фиксация по завершении. (copycommit равен 0)

Максимальная длина равна 80. (long равна 80)

Таблица EMP10 создана.

3 строк выбрано из scott@training.

3 строк вставлено в EMP10.

3 строк зафиксировано в EMP10 по соединению DEFAULT HOST.

SQL> set linesize 100

SQL> select * from emp10;

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO

---------- ------ --------- ------- -------- ---------- ------ ------

7782 CLARK MANAGER 7839 09.06.81 2450 10

7839 KING PRESIDENT 17.11.81 5000 10

7934 MILLER CLERK 7782 23.01.82 1300 10