Читать «SQL за 24 часа» онлайн - страница 163

Unknown

Стандартный SQL по своей сути является непроцедурным языком, что предполагает предъявление серверу базы данных отдельных операторов. Получив такой оператор, сервер должен решить, каким образом выполнить данный оператор оптимально. Процедурные языки дают программисту возможность не только осуществить запрос на выборку или манипуляцию данными, но и указать серверу базы данных, как именно следует выполнять такой запрос.

Transact-SQL

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

Вот пример оператора Transact-SQL:

IF (SELECT AVG(COST) FROM PRODUCTSJTBL) > 50

BEGIN

PRINT "ПОНИЗИТЬ ВСЕ ЦЕНЫ НА 10 ПРОЦЕНТОВ."

END

ELSE

PRINT "ЦЕНЫ ПРИЕМЛЕМЫ."

END

Это очень простой оператор Transact-SQL. В результате его выполнения, ••'' •"*-"" если средняя стоимость товаров в таблице PRODUCTSJTBL оказывается выше 50, печатается текст "понизить ВСЕ ЦЕНЫ НА 10 ПРОЦЕНТОВ", а если средняя стоимость товаров не превышает 50, печатается текст "ЦЕНЫ ПРИЕМЛЕМЫ".

Обратите внимание на использование здесь оператора IF.. .ELSE для оценки условий, накладываемых на получаемые данные. Новой здесь является и команда PRINT. Эти дополнительные возможности не составят даже капли в море всех возможностей Transact-SQL.

PL/SQL

PL/SQL является расширением SQL, предлагаемым Oracle. Подобно расширению Transact-SQL, PL/SQL является процедурным языком, структурированным в виде логических блоков программного кода. Блок PL/SQL состоит из трех разделов, два из которых необязательны. Первый раздел представляет собой раздел DECLARE (раздел объявлений) и яшшется необязательным. В разделе DECLARE содержатся переменные, курсоры и константы. Второй раздел - это раздел PROCEDURE (раздел выполняемых операторов), состоящий из условных команд и операторов SQL. Именно в этом разделе осуществляется управление всем блоком, поэтому раздел PROCEDURE является в блоке обязательным. Третий раздел называется разделом EXCEPTION (разделом исключительных состояний), и в нем задается реакция программы на ошибки выполнения и заданные программистом исключительные ситуации. Раздел EXCEPTION в блоке является необязательным. В PL/SQL имеется возможность использования переменных, констант, атрибутов, циклов, обработчиков исключительных ситуаций, отображения сообщений для программиста, управления транзакциями, сохранения процедур, триггеров и пакетов.

Вот пример оператора PL/SQL.

DECLARE

CURSOR EMP_CURSOR IS SELECT EMP_ID, LAST_NAME, FIRST_NAME, MID_INIT

FROM EMPLOYEE_TBL;

EMP_REC EMP_CURSOR%ROWTYPE;

BEGIN

OPEN EMP_CURSOR;