Классика баз данных - статьи

       

Фраза ON DEPT сообщает System


Фраза ON DEPT сообщает System R, что курсор С2 указывает на некоторый кортеж в DEPT. Этот факт может быть полезен при выборе пути доступа (например, может быть линк из DEPT к EMP по совпадению значений DNO). При использовании каждого из двух описанных типов ссылок на курсор позиция курсора не изменяется.

В SEQUEL 2 обеспечивается специальное средство EXECUTE, которое позволяет основной программе поддерживать интерактивных пользователей. Предположим, что программа во время выполнения читает с терминала текст оператора SEQUEL, который должен быть выполнен. Она может вызвать выполнение этого оператора, как показано в примере Р5.

Р5. Вызвать System R для выполнения оператора SEQUEL, текст которого находится в программной переменной QSTRING. EXECUTE QSTRING;

Если интерактивный пользователь хочет выполнить запрос, основная программа, поддерживающая работу этого пользователя, должна иметь некоторые средства выборки результата запроса и его отображения. Это сложно, так как программа не может знать заранее количество полей в результате запроса и их типы данных. В используемом методе комбинируется имя курсора и оператор EXECUTE, как показано в примере Р6.

P6. Прочитать текст запроса в переменную QSTRING и выбрать и отобразить результат запроса. (Звездочки обозначают SEQUEL; остальное – PL/1.)

DISPLAY("ENTER QUERY") REPLY(QSTRING); * LET C1 BE EXECUTE QSTRING; * DESCRIBE C1 INTO <pointer-1>: /* Отформатировать буфер для одного кортежа и установить на него pointer-2 – объяснения приведены ниже. */ * OPEN C1; DO WHILE (CODE = OK); * FETCH C1 INTO <pointer-2>; /* Отобразить кортеж */ END; * CLOSE C1;

В этой программе оператор LET C1 BE EXECUTE QSTRING связывает имя С1 с запросом, текст которого во время выполнения будет находиться в переменной QSTRING. Оператор DESCRIBE C1 возвращает описание числа полей и типов данных результата в массив, на который указывает <pointer-1>. Это позволяет программе выделить буферное пространство для хранения каждого поля результирующего кортежа.

Содержание  Назад  Вперед