|
Программирование >> Sql: полное руководство
Управляющие конструкции Стандарт 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;
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |