Читать в оригинале

<< Предыдущая Оглавление Следующая >>


4.2 SQL-операторы в прикладных программах

SQL-операторы можно встраивать в триггеры, хранимые процедуры и прикладные программы. Для того, чтобы встроить SQL-операторы в про­граммный код, необходимо преодолеть два затруднения. Во-первых, нужен какой-то способ, позволяющий записывать результаты выполнения SQL- операторов в программные переменные. Это можно сделать по-разному. В одних случаях для этого используются объектно-ориентированные про­граммы, в других применяются более простые методы. Например, в PL/SQL следующий оператор присваивает переменной rowcount значение, равное количеству строк в таблице CUSTOMER:

SELECT COUNT(*) INTO rowcount FROM CUSTOMER;

Вторая трудность заключается в несоответствии парадигм SQL пара­дигмам языков программирования. Язык SQL оперирует множествами: большинство операторов SQL возвращают таблицу или набор строк. В от­личие от этого, программы оперируют отдельными элементами или стро­ками. Из-за этого отличия оператор, подобный приведенному ниже, не имеет смысла:

SELECT Name INTO custName FROM CUSTOMER;

Если в таблице CUSTOMER имеется 100 строк, то запрос столбца Name возвратит 100 значений, в то время как переменная custName может при­нять только одно значение.

Чтобы преодолеть это затруднение, результаты выполнения SQL- операторов обрабатываются как псевдофайлы. SQL-оператор возвраща­ет набор строк. На первую строку помещается курсор, и данная строка обрабатывается. Затем курсор перемещается на следующую строку, и так далее, пока не будут обработаны все строки. Типичный процесс обработки выглядит так:

Открыть файл SQL (SELECT * FROM CUSTOMER);
Поместить курсор на первую строку;
Пока курсор не вышел за пределы таблицы {
Присвоить custName значение столбца Name в строке под курсором;
... Прочие операторы, использующие значение custName ...
Переместить курсор не следующую строку;
};
... Продолжение обработки...

Таким образом, строки, возвращенные SQL-оператором, обрабаты­ваются по одной. Именно таким является принцип встраивания SQL- операторов в программный код. Примеры будут представлены далее.

 



<< Предыдущая Оглавление Следующая >>