xBB – бесплатные скрипты PHP и доки для вебмастеров | ||
ДокументацияМетки (все метки)bbcode, php, xbb, высокие технологии, интернет, информационные технологии, ит, компьютер, сайт, софт
Подписаться через RSS2Email.ru
РекламаСтатьи, PlayStation, кардшаринг, диктофон, защита, компьютер, телефоны, код, продвижение, терминал |
Циклы в базах данных средствами PL/SQLВ наши дни базы данных применяются везде: в бухгалтерии, в библиотеке, на складе. А наиболее большим поставщиком программного обеспечения для обработки информации является фирма Oracle. Стандартный язык структурированных запросов SQL не поддерживает циклы, однако весьма нередко, для образования отчетов, к примеру, без циклов не обойтись. Потому корпорация Oracle сделала расширение этого языка - PL/SQL. Циклы предназначены для многократного исполнения конкретных операций. В PL/SQL есть 3 типа циклов: Самый простой цикл, написанный на PL/SQL, выглядит так: LOOP NULL; END LOOP / Такой цикл совершенно бессмысленен и небезопасен для для экземпляра БД, так как не имеет выхода. Из таких циклов есть три способа выхода:
Давайте рассмотрим пример применения цикла вида LOOP EXIT WHEN. Вот код: DECLARE
i NUMBER := 0;
BEGIN
LOOP -- start loop 1
i := i + 1;
IF (i >= 100) THEN
i := 0;
EXIT; -- exit when i >= 0
END IF;
END LOOP; -- end loop 1
LOOP -- start loop 2
i := i + 1;
EXIT WHEN (i >= 100); -- exit when i == 100
END LOOP; -- end loop 2
END;
/
Видимых действий этот код не производит, но и ошибок тоже! Первый цикл заканчивается когда i становится равной 100. При этом она обнуляется и осуществляется выход из цикла. Следующий цикл применяет вложенную конструкцию EXIT WHEN, использование которой является более синтаксически правильным. Впрочем, применение условных операторов позволяет проделать некоторые действия перед тем как выйти из цикла. В цикл вида LOOP EXIT WHEN END LOOP является самым часто используемым циклом при построении курсоров. Вот еще одна разновидность цикла: DECLARE
k NUMBER := 0;
BEGIN
WHILE (k < 10) LOOP
k := k + 1;
END LOOP;
END;
/
В отличие от ранее написанного кода, действия здесь выполняются только пока истинно в круглых скобках. Если условие принимает ложное значение, то выполнение цикла прекращается. В конструкциях циклов в PL/SQL нет оператора CONTINUE, который иногда является довольно полезным. Это имеет место потому, что выражение CONTINUE является зарезервированым в языке PL/SQL для других целей. Впрочем, конструкцию CONTINUE можно искусственно эмулировать, с помощью цикла LOOP EXIT WHEN END LOOP а также полезного, хотя и непопулярного, оператора GOTO. Для примера выведем нечетные числа вполоть до 20 с помощью цикла и GOTO: SET SERVEROUTPUT ON
DECLARE
s NUMBER := 0;
BEGIN
DBMS_OUTPUT.enable;
LOOP
IF(MOD(s, 2) = 1) THEN
GOTO LESS;
END IF;
DBMS_OUTPUT.put_line(TO_CHAR(s)||' is even!');
<<LESS>>
EXIT WHEN (s = 20);
s := s + 1;
END LOOP;
END;
/
Надеюсь, теперь для вас не составит труда применять циклы PL/SQL для построении серверных приложений баз данных! :) Последнее редактирование: 2010-02-03 18:11:41 Метки материала: база, бд, база данных, sql, программирование, языки программирования, разработка программ Оставьте свой комментарий: |
|
© 2007-2010, Дмитрий Скоробогатов.
Разрешается воспроизводить, распространять и/или изменять материалы сайта
в соответствии с условиями GNU Free Documentation License,
версии 1.2 или любой более поздней версии, опубликованной FSF,
если только иное не указано в самих материалах.