|
Программирование >> Понятие sql
EXEC SQL BEGIN DECLARE SECTION; SQLCODE : integer; newcity : packed array[1..12] of char; commnull : boolean; citynull : boolean; response : char; EXEC SQL END DECLARE SECTION; EXEC SQL DECLARE CURSOR Salesperson AS SELECT * FROM SALESPEOPLE; begln { main program } EXEC SQL OPEN CURSOR Salesperson; EXEC SQL FETCH Salesperson INTO (:snum, :sname, :city, :i cit, :comm, :i com); { Выборка первой строки } hile SQLCODE=0do{ П while SQLCODE=0do{ Пока эти строки в таблице Продавцов.} begin if i com < 0 then commnull: = true; if i cit < 0 then citynull: = true; { Установить логические флаги, которые могут показать NULLS.} if citynull then begin write (Нет текущего значения city для продавца , snum, Хотите предоставить хотя бы одно? (Y/N)); { Подсказка покажет значение city состоящее из NULL значений.} read (response); { Ответ может быть сделан позже.} end { если citynull } else begin { не citynull } if not commnull then { Чтобы выполнять сравнение и операции только для не-NULL значений связи } begin if city=London then comm:=comm*.02*.02 else comm:=comm+.02; end; { Даже если значение и не - commnull, begin и end здесь для ясности.} write (Текущий city для продавца, snum, есть, city, Хотите его изменить? (Y/N)); { Обратите Внимание: Продавец, не назначеный в данное время в определенный город, не будет иметь изменений комиссионых при определении, находятся ли он в Лондоне.} read (response); { Ответ теперь имеет значение независимо от того, что citynull верен или неверен.} end; { иначе не citynull} if response = Y then begin write (Введите новое значение city:); read (newcity); if not commnull then { Эта операция может быть выполнена только для не-NULL значений.} case newcity of: begin Barcelona : comm:= comm + .01, San Jose : comm:= comm * .01 end; { случно и если не commnull} EXEC SQL UPDATE Salespeople SET city = :newcity, comm = :comm:i com WHERE CURRENT OF Salesperson; { Переменная индикатора может поместить NULL значение в поле comm если так назначено.} end; { Если ответ = Y, или если ответ <> Y, изменений не будет.} EXEC SQL FETCH Salesperson INTO (:snum, :sname, :city, :i clt, :comm, :l com); { выборка следующей строки } end; { если SQLCODE = 0} EXEC SQL CLOSE CURSOR Salesperson; end; {основной программы} Приложение B ТИПЫ ДАНН1Х В SQL
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |