Программирование >>  Sql: полное руководство 

1 ... 195 196 197 [ 198 ] 199 200 201 ... 264


Управляющие конструкции

Стандарт SQL/PSM определяет классические программные управляющие конструкции, которые имеются в большинстве современных диалектов SPL На рис 20 19 представлен синтаксис циклических и условных конструкций Обратите внимание на то, что каждая инструкция SQL заканчивается символом точки с запятой Явное использование блоков инструкций не требуется Возможности создания циклов довольно гибкие имеются формы с проверкой условия в начале и в конце цикла, а также бесконечные циклы, выход из которых может выполняться только по явной команде, имеющейся в теле цикла Каждая управляющая конструкция завершается ключевым словом END со спецификатором, указывающим тип конструкции, что облегчает чтение и отладку профамм

Условное выполнение - IF условие THEN -

- инструкция

-ELSEIF условие THEN-t- инструкция

- Е LSEI Р-г- инструкция

-END IF-

Циклы

-LOOP -т-инструкция,-

END LOOP

-метка

-WHILE-условие DO-r- инструкция,-

-END WHILE-

Е-Г*

-метка -

REPEAT-T-инструкция -

UNTIL условие END REPEAT-

-метка

Рис. 20 19 Синтаксчваае

уп03впяющих консгрукф)й в SQL/PSM

Операции с наборами записей

Стандартом SQL/PSM расширены возможности управления наборами записей, предусмафивавшиеся стандартом SQL2 для встроенного SQL Теперь эти же возможности определены и для подпрофамм SQL Инструкции declare cjrsor, open, Fetch и close сохранили свою роль и предназначение, но для передачи парамефов



и получения возвращаемых данных в них используются не программные переменные а параметры и переменные хранимых процедур

Стандартом SQL/PSM вводится одна новая полезная конструкция - цикл обработки набора загагсей (рис 20 20). Как и аналогичные конструкции Oracle и Infomiix, о которых рассказывалось в этой главе, цикл объединяет определение набора записей, инструкции open, fetch и close в единую Структуру, содержащую код для обработки каждой записи

-FOR пврвмвнная цикла AS-

имя на6ора записвй -

INSENSITIVE

CURSOR FOR

спвцификация запроса -,

DO-I- инструкция, -

ENDFOR-

Рис. 2020. Синтаксическая диаграмма цикла абррбдттмзбора записей в SQL/PSM

Блоки инструкций

На рис. 20.21 изображен синтаксис блока инструкций, определенный стандартом SQL/PSM. Это довольно громоздкая конструкция со следующими компонентами

метка блока;

объявления локальных переменных, используемых в пределах блока;

объявления заданных пользователем локальных ошибочных ситуаций;

определения наборов записей для запросов, выполняемых внутри блока;

определения обработчиков возникающих ошибок;

последовательность выполняемых инструкций SQL.

Локальные переменные в процедурах и функциях SQL/PSM объявляются посредством инструкции declare. Значения им присваиваются с помощью инструкции set функции возвращают значения, используя для этого инструкции return. Вот пример блока инструкций, который может присутствовать в теле хранимой функции:

try again: begin

/* Объявление двух локальных переменных */ declare msg text varchar (40); declare tot amt decimal (16, 2);

/* Получение общей стоимости заказов */ set tot amt = get tot ords();



if (tot amt > 0) then

return (tot amt) else

return (0.00) end if end try again

-begin-

Lnot-?

-ATOMIC-

- объявление переменной-, -

- объяеление ошибочной ситуаи,ии -,

- опредепение набора записей-

- опредепение обработчика ошибок -,

- инструкция

-END

метка Объявление переменной

- declare -г-имяпеременой - тип данных-

DEFAULT значение по умолчанию

Объявление ошибочной ситуации

- DECLARE-имя ситуации CONDITION.

I- FOR SQLSTATE код ошибки

Рис. 20.2 J. Синтакдческая Я1>мма бпока инструтй а SQL/PSM

Обработка ошибок

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

sqlwarning - ОДНО ИЗ Предупреждений, определенных стандартом SQL2;

not found - ситуация, когда инструкция fetch достигла конца набора записей;

sqlstate значение - одна из ситуаций, для которых определены коды ошибок sqlstate;



1 ... 195 196 197 [ 198 ] 199 200 201 ... 264

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика