Процедурные расширения языка 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. Имеется возможность указать тип переменной, явно ссылаясь на определенный столбец или таблицу. Например:
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 выражение; (только функции)Комментарии Однострочный комментарий обозначается так: -- далее следует текст комментария до конца строки Многострочный комментарий обозначается аналогично языку С: /* текст комментария может располагаться где угодно и занимать сколько угодно строк */
Читайте также: A- выдвижение кончика языка к верхней губе Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|