Работаем на SQL
Замечание: Ответы на эти упражнения записаны на псевдокоде, сходном с англий ским языком и показывающем логику программы, для того, чтобы помочь читателям, не знакомым с языком программирования Pascal (либо с каким-либо другим языком, из числа тех, что можно использовать для иллюстрации). Обратите внимание на ис пользуемые концепции, а не на особенности применения того или иного языка. Для соблюдения последовательности в изложении примеров принят стиль псевдокода, сходный с Pascal. Из программ опущены все детали, выходящие за пределы представ ленного в данной главе материала (определение устройств ввода/вывода, связи с базой данных и так далее). Здесь мы представляем один из многих вариантов выполнения
этих упражнений.
1.Разработайте простую программу, которая выбирает все сочетания snum и cnum из таблиц Ordres и Custorners и позволяет увидеть все эти комби
нации в форме, близкой к письму. Если для значения из таблицы Orders не найдено соответствующего значения из таблицы Customers, то значе
ние поля snum для этой строки заменяется на соответствующее. Можно
предположить, что курсор с подзапросом является обновляемым (огра ничение ANSI, которое относится и к представлениям, но редко исполь зуется на практике) и поддерживается базовая целостность базы данных, отличная от тех ошибок, которые фиксируются (первичный ключ являет ся уникальным, все значения столбца cnums являются корректными, и т.д.). Следует предусмотреть секцию объявлений (DECLARE) и удосто вериться, что все используемые курсоры объявлены.
2. Предположим, данная программа соответствует ограничению ANSI, ка сающемуся запрета на использование для курсов или представлений ха рактеристики "обновляемый". Как нужно модифицировать программу в этом случае?
3.Разработайте программу, которая дает возможность пользователю изме нить значения поля city для продавцов, автоматически увеличивая на .01 комиссионные для продавцов, перемещенных для обслуживания в
Barcelona, и уменьшая их на .О1 для продавцов, перемещенных для обслу живания в San Jose. Кроме того, продавцы, расположенные в данный мо мент в London, теряют .02 своих комиссионных независимо от смены го
рода, тогда как для продавцов, не расположенных в настоящее время в