Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Процедурные расширения языка SQL




Как мы показали в предыдущих лекциях, язык SQL является очень мощным языком манипулирования данными, однако для решения сложных задач обработки данных ему не хватает управляющих конструкций, имеющихся в универсальных языках программирования. В связи с этим многие СУБД имеют процедурные расширения этого языка, которые представляют собой полноценный язык программирования, поддерживающий возможность использования в нем операторов SQL. На таком языке можно писать процедуры и функции, постоянно хранящиеся в базе данных и исполняемые в среде СУБД.

К сожалению, на настоящий момент ситуация такова, что каждая СУБД поддерживает свой собственный язык процедурного расширения SQL, что усложняет задачи переносимости программного обеспечения. Поэтому те примеры, которые будут приведены в этой лекции, используют процедурный язык PL/SQL, поддерживаемый Oracle, и работают только в среде этой СУБД. Из других процедурных расширений наиболее близок к PL/SQL язык СУБД PostgreSQL, который называется PLG/SQL. Используемое в Microsoft SQL Server процедурное расширение Transact-SQL по синтаксическим конструкциям отличается от PL/SQL, но по семантике является близким. Во всяком случае, понимание логики разработки хранимого кода на PL/SQL поможет легко освоить и любое другое процедурное расширение.

Для дальнейшего изложения вначале необходимо привести минимальные сведения по конструкциям языка PL/SQL. По синтаксису он наиболее близок языку программирования ADA, конструкции его очень логичны. Основной программной единицей является блок – совокупность операторов, заключенная в операторные скобки BEGIN... END. При выполнении процедурных действий в блоке, как правило, необходимы переменные для хранения промежуточных значений. Объявление переменных предшествует блоку и образует секцию объявления, которая начинается ключевым словом DECLARE. Для переменных поддерживаются те же типы, что и для столбцов таблиц Oracle. Имеется возможность указать тип переменной, явно ссылаясь на определенный столбец или таблицу. Например:

DECLARE x INTEGER; fio students.name_st%type; s subjects%type;BEGIN...

END

В приведенном примере для переменной x тип указан явно, переменная fio имеет такой же тип, как столбец name_st таблицы students, переменная s имеет тип запись (RECORD), структура которой идентична строке таблицы subjects (содержит два поля cod_sub и name_sub).

Операторы языка PL/SQL

Оператор присваивания

переменная:= выражение;

Условный оператор

IF условие THEN оператор1; оператор2;...[ELSIF условие THEN оператор3; оператор4;...][ELSE оператор5; оператор6;...]

END IF;

Операторы цикла

Бесконечный цикл, условие выхода задается в теле цикла

LOOP оператор1; оператор2;... EXIT WHEN условие выхода из цикла;

END LOOP;

Цикл с предусловием

WHILE условие LOOP оператор1; оператор2;...

END LOOP;

Цикл с параметром

FOR параметр IN (множество значений) LOOP оператор1; оператор2;...

END LOOP;

Множество значений параметра обычно задается в виде диапазона

(начальное_значение.. конечное_значение)

5. Оператор безусловного перехода:

GOTO метка;... метка: оператор; 6. Оператор возврата из процедуры/функции RETURN;RETURN выражение; (только функции)

Комментарии

Однострочный комментарий обозначается так:

-- далее следует текст комментария до конца строки

Многострочный комментарий обозначается аналогично языку С:

/* текст комментария может располагаться где угодно и занимать сколько угодно строк */

Поделиться:





Читайте также:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...