Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Введение в СУБД HyTech.doc
Скачиваний:
11
Добавлен:
01.03.2025
Размер:
2.67 Mб
Скачать

3.2.2 Оператор вывода результатов на экран browse resullts Оператор вывода результатов на экран

Вывод результатов предыдущего поиска (предложение select) в табличном виде. Сервер сам формирует листинг и передает клиентской программе.

Любой оператор может испортить результаты поиска, и оператор browse results в этом случае работать не будет (может выдаваться сообщение «В курсоре не результаты поиска по select»).

Этот оператор применяется для отладки запросов – просмотра небольших промежуточных результатов на экране.

Формат оператора:

browse results;

Пример использования оператора:

select * from READER; browse results;

3.2.3 Оператор копирования записей между таблицами insert select Оператор insert select

Оператор insert select используется для копирования записей между таблицами.

Формат:

insert into Имя_таблицы        '(' Список_полей ')'        select Список_отбираемых_полей        from Список_таблиц        [ where Условие_отбора ];

Аргументы:

Аргумент

Значение

Имя_таблицы

Определяет таблицу, в которую вставляется запись.

Список_полей

Определяет поля, в которые заносятся указанные ниже значения. Эти поля отделяются друг от друга запятыми.

Список_отбираемых_полей

Задает поля, значения которых будут занесены в соответствующие поля очередной новой записи.

Список_таблиц

Задает таблицы, из которых выбирается информация для вставки.

Условие_отбора

Определяет, какие именно записи отбираются.

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

Оператор insert работает следующим образом: сначала выполняется запрос select ... from ... where и отбираются записи, на основе которых будут формироваться добавляемые записи. Затем для каждой найденной записи создается и заполняется новая запись, которая и заносится в таблицу.

Примеры работы с оператором

Для демонстрации работы оператора создадим таблицу NEW_BOOK, которую заполним данными из таблицы BOOK. При заполнении таблицы будем также использовать кодификатор.

if (table_exists('NEW_BOOK') > 0) drop table NEW_BOOK; create table NEW_BOOK (    ID dword,    AUTHOR char(100),    NAME char(100) ); declare variable @nCode; coderunload("AUTHOR"); @nCode = coderload("AUTHOR", 1, 3); if (@nCode != 0) {    drop table TMP;    create table TMP (MSG char(50));    insert into TMP (MSG) values (" Произошла ошибка" + @nCode);    fix all;    select * from TMP;    quit; } fix all; insert into NEW_BOOK (ID, AUTHOR, NAME) select ID, coder("AUTHOR", ID_AUTHOR), NAME from BOOK; select    ID     as BKEY,    AUTHOR as AUTHOR,    NAME   as BOOKNAME from    NEW_BOOK;

Рисунок 1. Результата выборки

Продемонстрируем работу скрипта в случае ошибки, для чего укажем неверный номер поля, загружаемого в кодификатор в качестве значения:

if (table_exists('NEW_BOOK') > 0) drop table NEW_BOOK; create table NEW_BOOK (    ID dword,    AUTHOR char(100),    NAME char(100) ); declare variable @nCode; coderunload("AUTHOR"); @nCode = coderload("AUTHOR", 1, 35); if (@nCode != 0) {    drop table TMP;    create table TMP (MSG char(50));    insert into TMP (MSG) values (" Произошла ошибка" + @nCode);    fix all;    select * from TMP;    quit; } fix all; insert into NEW_BOOK (ID, AUTHOR, NAME) select ID, coder("AUTHOR", ID_AUTHOR), NAME from BOOK; select    ID     as BKEY,    AUTHOR as AUTHOR,    NAME   as BOOKNAME from    NEW_BOOK;

Рисунок 2. Ошибка при работе с кодификатором