Затем программа образует массив указателей
Затем программа образует массив указателей на эти буферы полей и устанавливает <pointer-2>, чтобы он указывал на этот массив. Оператор OPEN C1 подготавливает систему к доставке первого кортежа. Затем каждый оператор FETCH C1 размещает один кортеж в указанных буферах. После выполнения оператора CLOSE C1 в QSTRING может быть прочитан текст нового запроса. При последующем выполнение операторов DESCRIBE C1, OPEN C1 и FETCH C1 в них будет использоваться новый запрос.
При написании программы поддержки интерактивного пользователя программист должен проводить различие между операторами запросов (например, SELECT * FROM EMP) и другими операторами, которые не возвращают никакого результата (например, DELETE EMP WHERE EMPNO = 505). Для этого проверяется первое слово входной строки. Все запросы начинаются со слова SELECT и обрабатываются с помощью
LET C1 BE EXECUTE QSTRING;
Все операторы, не начинающиеся с SELECT, обрабатываются с помощью
EXECUTE QSTRING;
Чтобы дать возможность программе сохранить результат запроса после его выполнения, синтаксис оператора присваивания расширяется таким образом, чтобы допускать присваивание активного множества курсора новому отношению, как показано в примере Р7.
Р7. Присвоить активное множество курсора С5 новому отношению EXEMPT, которое имеет столбцы EMPNO, NAME и JOB.
ASSIGN TO EXEMPT(EMPNO,NAME,JOB): CURSOR C5;
Программа на PL/1 со встроенными операторами SEQUEL передается прекомпилятору System R. Все операторы SEQUEL распознаются и заменяются вызовами модуля времени выполнения, который выполняет эти операторы. Там, где это возможно, производится синтаксический разбор оператора SEQUEL, и оптимальный путь доступа выбирается для него во время прекомпиляции. Когда это невозможно, как в случае EXECUTE, синтаксический разбор и выбор пути доступа производятся во время выполнения.
Во время прекомпиляции проверка прав программы на выполнение различных действий выполняется относительно привилегий пользователя, который компилирует программу.
Содержание Назад Вперед