custпum: integeг;
salesnum: iпtegeг;
ЕХЕС SQL ENO DECLARE SECTION;
ЕХЕС SQL DECLARE Wгопg_Огdегs AS CURSOR FOR SELECT cпum, snum
FROM Огdегs а
WHERE snum < > (SELECT sпum
FROM Customeгs Ь
WHERE a.cпum = b.cпum);
{ Здесь используется SQL. Рассмотренный запрос локализует строки
таблицы Oгdes, которые не согласуются со строками таблицы Customeгs.}
ЕХЕС SQL DECLARE Cust_assigns AS CURSOR FOR
SELECT cnum,sпum FROM Customeгs;
Этот курсор используется для поддержки правильных значений столбца sпum.}
begin { основная программа }
ЕХЕС SQL OPEN CURSOR Wгопg_Огdегs; while SQLCODE = О do
{Цикл пока значение переменной Wгong_Oгdeгs пусто.}
begin
ЕХЕС SOL FETCH Wгong_Oгdeгs INTO (: cпum, : snum);
if SQLCODE=O then
begiп
Если значение переменной Wгопg_Огdегs пусто, то в этом цикле ничего не должно выполняется.}
ЕХЕС SQL OPEN CURSOR Cust_Assigпs;
гереаt
ЕХЕС SOL FЕТСН Cust_Assigпs INTO (:custпum, :salesпum);
until :custпum = :cпum;
Повторение команды FETCH uпtil ... приведет к тому, что курсор Cust_Assigпs
перемещается wаг за шагом до тех пор, пока строка, содержащая текущее
значение cnum из Wгong_Orders не будет найдена.}
ЕХЕС SQL CLOSE CURSOR Cust_assigns;
{Таким образом, каждое повторное выполнение происходит с начала цикла. Значение, полученное с помощью этого курсора, хранится в переменной
salesnum.}
ЕХЕС SOL UPDATE Ordeгs