Oracle PL / SQL LOOP с пример

Съдържание:

Anonim

Какво представляват Loops?

Loops позволява определена част от кода в програма да бъде изпълнена за желания брой пъти.

В този урок ще видим концепцията за цикъла в PL / SQL и потока на управление в цикли. Ще се научиш-

  • Въведение в Loops Concept
  • Изявления за контрол на контура
  • Видове Loop в PL / SQL
  • Изявление на основния цикъл
  • Етикетиране на цикли

Въведение в Loops Concept

Loops концепцията осигурява следното предимство в кодирането.

  • Многократна употреба на кода
  • Намален размер на кода
  • Лесен поток на управление
  • Намалена сложност

Диаграмата по-долу показва концепцията за циклично изобразяване

В горната диаграма условието на цикъла ще бъде проверено и докато условието на цикъла е изпълнено, изпълняващият блок ще бъде изпълнен.

Във всяка итерация променливата на брояча на цикъла, която всъщност решава условието на цикъла, трябва да се промени, за да направи контролния изход от цикъла. В някои случаи тази променлива на брояча на цикли е оператор за увеличаване / намаляване за предварително дефиниран брой, а в някои случаи това е условие за търсене, което продължава да изпълнява блока, докато не го удовлетвори.

Изявления за контрол на контура

Преди да научите концепцията за цикли, е задължително да научите инструкциите за управление на цикли. Изявленията за управление на контура са тези, които всъщност контролират потока на изпълнение вътре в цикъла. По-долу е дадено подробното описание на операторите за управление на цикъла.

ПРОДЪЛЖИ

Тази ключова дума изпраща инструкция към PL / SQL двигателя, че всеки път, когато PL / SQL механизмът срещне тази ключова дума вътре в цикъла, тя ще пропусне останалия код в блока за изпълнение на кода и следващата итерация ще започне незабавно. Това ще се използва главно, ако кодът в цикъла иска да бъде пропуснат за определени итерационни стойности.

ИЗХОД / ИЗХОД КОГА

Тази ключова дума изпраща инструкция към PL / SQL механизма, че когато PL / SQL механизмът срещне тази ключова дума, тя веднага ще излезе от текущия цикъл. Ако PL / SQL механизмът срещне EXIT във вложен цикъл, той ще излезе от цикъла, в който е дефиниран, т.е. не от външния контур. „EXIT WHEN“ е последван от израз, който дава булев резултат. Ако резултатът е ИСТИНСКИ, тогава контролата ще ИЗХОДИ.

ИДЕТЕ

Този оператор ще прехвърли контролата към етикетирания оператор ("GOTO

  • Прехвърляне на контрол може да се извърши само в рамките на подпрограмите.
  • Прехвърлянето на контрол не може да се извърши от част за обработка на изключения към частта за изпълнение

Не се препоръчва използването на това изявление, освен ако няма други алтернативи, тъй като проследяването на кодовия контрол ще бъде много трудно в програмата поради прехвърлянето на управление от една част в друга част.

Видове Loop в PL / SQL

PL / SQL осигурява следните три вида цикли

  • Изложение на основния цикъл
  • За контурно изявление
  • Докато оператор на цикъл

Изявление на основния цикъл

Този цикъл е най-простата структура на цикъл в PL / SQL. Блокът за изпълнение започва с ключова дума 'LOOP' и завършва с ключовата дума 'END LOOP'.

Условието за изход трябва да бъде дадено вътре в този блок за изпълнение, така че да контролира изхода от цикъла.

Необходимо е ключовата дума EXIT да бъде дадена изрично в частта за изпълнение, за да излезе от цикъла.

LOOPEND LOOP;
Обяснение на синтаксиса:
  • В горния синтаксис ключовата дума „LOOP“ маркира началото на цикъла, а „END LOOP“ отбелязва края на цикъла.
  • Изпълнителният блок съдържа целия код, който трябва да бъде изпълнен, включително условието EXIT.
  • Изпълнителната част може да съдържа всеки оператор за изпълнение.

Забележка: Изразът на основния цикъл без ключова дума EXIT ще бъде INFINITE-LOOP, който никога няма да спре.

Пример 1 : В този пример ще отпечатаме число от 1 до 5, като използваме оператора на основния цикъл. За това ще изпълним следния код.

DECLAREa NUMBER:=1;BEGINdbms_output.put_line('Program started.');LOOPdbms_output.put_line(a);a:=a+1;EXIT WHEN a>5;END LOOP;dbms_output.put_line('Program completed');END:/

Обяснение на кода:

  • Кодов ред 2 : Деклариране на променливата „a“ като „НОМЕР“ тип данни и инициализиране със стойност „1“.
  • Код ред 4 : Отпечатване на изявлението „Програмата е стартирана“.
  • Кодов ред 5: Ключовата дума „LOOP“ маркира началото на цикъла.
  • Кодов ред 6: Отпечатва стойността на „а“.
  • Кодов ред 7: Увеличава стойността на 'a' с +1.
  • Кодов ред 8: Проверява дали стойността на „а“ е по-голяма от 5.
  • Кодов ред 9: Ключовата дума „END LOOP“ маркира края на блока за изпълнение.
  • Кодът от ред 6 до ред 8 ще продължи да се изпълнява, докато 'a' достигне стойността 6, тъй като условието ще върне TRUE, а контролата ще излезе от цикъла.
  • Код ред 10: Отпечатване на изявлението „Програмата е завършена“

Етикетиране на цикли

В PL / SQL контурите могат да бъдат етикетирани. Етикетът трябва да бъде затворен между "<<" и ">>". Етикетирането на цикли, особено в кодовете за вложени цикли, ще даде по-голяма четливост. Етикетът може да бъде даден в команда EXIT за излизане от този конкретен цикъл. Използвайки етикет, контролът може да бъде направен директно да излезе от външния цикъл на вложените цикли от всяко място вътре в цикъла, като даде командата за излизане, последвана от етикета на външния цикъл.

<>LOOP  . <> LOOP --inner  END LOOP; . END LOOP;
Обяснение на синтаксиса:
  • В горния синтаксис out цикълът има още един цикъл вътре в себе си.
  • '<>' и '<>' са етикетите на тези цикли.

Пример 1 : В този пример ще отпечатаме номер, започвайки от 1, като използваме оператора Basic loop. Всяко число ще бъде отпечатано толкова пъти, колкото е неговата стойност. Горната граница на поредицата е фиксирана в частта за деклариране на програмата. Нека научим как можем да използваме концепцията на етикета, за да постигнем това. За това ще изпълним следния код

DECLAREa NUMBER:=0;b NUMBER;upper-limit NUMBER :=4;BEGINdbms_output.put_line(‘Program started.' );«outerloop»‭ ‬LOOPa:=a+1;b:=l;«inner loop»LOOPEXIT outer_loop WHEN a > upper_limit;dbms_output.put_line(a);b:=b+l;EXIT inner_loop WHEN b>a;END LOOP;END LOOP;dbms_output.put_line('Program completed.');END;/

Обяснение на кода:

  • Кодов ред 2-3 : Деклариране на променливата „a“ и „b“ като тип данни „NUMBER“.
  • Код ред 4 : Деклариране на променливата „upper_limit“ като тип данни „NUMBER“ със стойност „4“
  • Код ред 6 : Отпечатване на изявлението „Програмата е стартирана“.
  • Кодов ред 7: Външният цикъл е означен като "external_loop"
  • Кодов ред 9: Стойността на „а“ се увеличава с 1.
  • Кодов ред 11: Вътрешният цикъл е означен като "inner_loop".
  • Кодов ред 13: условие EXIT, което проверява дали стойността „a“ е по-висока от стойността „upper_limit“. Ако не, тогава ще отиде по-далеч, в противен случай излиза директно от външния цикъл.
  • Кодов ред 14: Отпечатване на стойността на „b“.
  • Кодов ред 15: Увеличава стойността на 'b' с +1.
  • Кодов ред 16: условие EXIT, което проверява дали стойността на „b“ е по-висока от „a“. Ако е така, тогава той ще излезе от контрола от вътрешния контур.
  • Код ред 14: Отпечатване на изявлението „Програмата е завършена“

Обобщение

Примка Основен цикъл
Критерии за изход Изход, когато срещне ключовата дума 'EXIT' в частта за изпълнение
Употреба Добре да се използва, когато изходът не се основава на някакво конкретно условие.