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

       

Связывание с основным языком


SEQUEL 2 разрабатывается таким образом, что может использоваться как в качестве автономного языка для интерактивных пользователей, так и в качестве подъязыка данных, встраиваемого в основной язык программирования. Возможности, рассмотренные в предыдущих разделах, описывались с точки зрения интерактивного пользователя. В этом разделе описываются дополнительные возможности языка, которые обеспечиваются для связи с основным языком. Там, где это необходимо, мы ссылаемся на конкретные детали реализации System R.

System R обеспечивает использование операторов SEQUEL в качестве операторов программы PL/1. Операторы SEQUEL обнаруживаются прекомпилятором, который заменяет их допустимыми вызовами PL/1 программ модуля времени выполнения, которые и выполняют нужныю функции.

Для запроса обеспечиваются средства, доставляющие результат в основную программу. Запросы, встраиваемые в программу, могут содержать раздел INTO, в котором задается список переменных основной программы, служащих адресатами для выбранных атрибутов, как показано в примере Р1.

Р1. Возвратить задание служащего с номером 507 в программную переменную X и его зарплату в программную переменную Y.

SELECT JOB,SAL INTO X,Y FROM EMP WHERE EMPNO = 507;

Кроме раздела INTO, программные переменные могут появляться везде, где может использоваться константа в запросе или операторе SEQUEL любого другого типа. Всюду, где появляется программная переменная, программист может вместо этого определить пару имен переменных, разделенных двоеточием. Первая переменная этой пары называется хранителем значения (value holder), а вторая, которая должна иметь тип данных BIN FIXED, – null-индикатором (null indicator). Ноль в null-индикаторе означает наличие реального значения в хранителе значения; отрицательное значение в null-индикаторе означает null-значение. Эти возможности иллюстрируются в примере Р2.

Р2. Возвратить в программную переменную Х1 зарплату служащего, номер которого находится в программной переменной Z1. (Переменные Х2 и Z2 служат null-индикаторами.)



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