pl sql operators control statements tutorial
Научете за различни PL SQL оператори и отчети за контрол като if-then-else, for loop, while loop и др. С примерни примери за код:
В PL / SQL команди урок на PL / SQL серия , научихме за командите PL SQL INSERT, UPDATE, DELETE и SELECT с примери за програмиране.
В тази статия ще обсъдим различните оператори, които PL / SQL поддържа като релационни, логически, аритметични и сравнителни оператори. Ние също така ще проучим контролните изявления, които се използват широко в PL / SQL.
PL / SQL условията и итеративните структури са обяснени подробно с примери тук в този урок.
какви са различните имейл акаунти
Какво ще научите:
PL SQL оператори
PL SQL операторът насочва компилатора да извършва аритметични и логически операции с помощта на символ.
По подразбиране PL / SQL има следните типове оператори:
- Аритметика
- Сравнение
- Логично
- Струна
- Релационна
# 1) Аритметични оператори
Символ | Описание | |
---|---|---|
7 | И | съчетание |
+ | Извършва добавяне на два операнда. | |
* | Извършва умножение на два операнда. | |
/ | Извършва разделяне на два операнда. | |
- | Извършва изваждане на два операнда. | |
** | Извършва експоненциална операция. |
Внедряване на код с аритметични оператори:
declare a number(5):= 2; b number(5):= 1; res number(10); sub number(10); mul number(10); div number(10); exp number(10); begin -- adding a and b and storing in res res:= a+b; -- subtracting b from a and storing in sub sub:= a-b; -- multiplying a and b and storing in mul mul:= a*b; -- dividing a and b and storing in div div:= a/b; -- exponential operation and storing in exp exp:= a**b; dbms_output.put_line('Sum value is '||res); dbms_output.put_line('Subtraction value is '||sub); dbms_output.put_line('Multiplication value is '||mul); dbms_output.put_line('Division value is '||div); dbms_output.put_line('Exponential value is '||exp); end; /
Резултатът от горния код трябва да бъде:
# 2) Релационни оператори
Тези оператори изпълняват стойностите за сравнение и връщане в булева стойност.
Сериен номер. | Символ | Описание |
---|---|---|
1 | > | Проверява дали стойността на левия операнд е по-голяма от дясната. |
две | < | Проверява дали стойността на десния операнд е по-голяма от лявата. |
3 | > = | Проверява дали стойността на левия операнд е по-голяма от равна на дясната. |
4 | <= | Проверява дали стойността на десния операнд е по-голяма от равна на лявата. |
5 | = | Проверява дали два операнда са равни. |
6 | ! =, ~ =, | Проверява дали два операнда не са равни. |
Внедряване на код с релационни оператори:
DECLARE a NUMBER := 5; b NUMBER := 12; BEGIN IF a != b THEN DBMS_OUTPUT.PUT_LINE('a is not equal to b'); ELSIF a = b THEN DBMS_OUTPUT.PUT_LINE('a is equal to b'); ELSE DBMS_OUTPUT.PUT_LINE ('Not sure of the input'); END IF; END; /
Резултатът от горния код трябва да бъде:
# 3) Сравнителни оператори
Този оператор дава изхода като истинска, фалшива или нулева стойност въз основа на резултата от сравнението на един оператор с другия.
Символ | Описание |
---|---|
МЕЖДУ | Проверява дали дадена стойност се намира в диапазон. |
IN | Проверява дали дадена стойност е равна на набор от членове. |
КАТО | Проверява дали низ или символ е подобен на шаблон. |
Е НИЩО | Проверява дали операндът е равен на стойността Null. |
Внедряване на код с оператор за сравнение:
DECLARE i INTEGER; -- NULL value is set by default BEGIN i := i*5; -- i is still NULL since NULL * 5 is NULL IF i IS NULL THEN DBMS_OUTPUT.PUT_LINE('i is NULL.'); END IF; END; /
Резултатът от горния код трябва да бъде:
# 4) Логически оператори
PL / SQL поддържа повече от един логически оператор. Те действат върху операнди, които имат булев характер и също дават булеви резултати.
Сериен номер. | Символ | Описание |
---|---|---|
1 | НЕ | Известен като логичен НЕ. Ако резултатът е верен, тогава НЕ го прави фалшив. |
две | И | Известен като логичен И. Ако всички операнди са верни, резултатът е истина. |
3 | ИЛИ | Известен като логичен ИЛИ. Ако някой от операндите е истина, резултатът е истина. |
Внедряване на код с логически оператори:
declare n1 number := 5; n2 number := 10; n3 number := 15; begin if (n1 n2 or n1 = 5) then dbms_output.put_line ('The condition is true'); else dbms_output.put_line ('The condition is false'); end if; end; /
Резултатът от горния код трябва да бъде:
Предимство на оператора
PL SQL приоритетът на оператора е зададен, за да дефинира как трябва да се извърши операция, включваща единичен или множество оператори или повече от един операнд. Операторите с по-висок приоритет се изчисляват първо от останалите, докато операторите със същия приоритет се манипулират в никаква конкретна последователност.
Таблицата по-долу изброява операторите от висок до нисък приоритет.
Сериен номер. | Символ | Описание |
---|---|---|
1 | ** | експоненциална операция |
две | +, - | събиране, изваждане |
3 | *, / | умножение, деление |
4 | +, -, || | събиране, изваждане, конкатенация |
5 | оператори за сравнение | |
6 | НЕ | отрицание |
8 | ИЛИ | включване |
Изявления за контрол в PL / SQL
Контролните структури в PL / SQL се състоят от програмните структури като итерация, последователност, и подбор . Формата на подбор проверява условие, след което въз основа на резултатите от true или false, обработва следващия блок код по ред.
Формата на итерация многократно изпълнява блок от код или изрази, докато условието е валидно. И накрая, формата на последователност обработва изявленията един по един в реда, в който те присъстват.
Изявление за състоянието в PL SQL
В сценариите за вземане на решения се използват изявленията като IF-THEN, IF-THEN-ELSE, IF-THEN-ELSEIF и CASE.
# 1) АКО-ТОГАВА: Това е една от основните форми на твърдения за IF. Той съдържа блок код с ключови думи ENDIF и THEN. Ако резултатът от условие е истина, следващият блок от код се изпълнява иначе не.
Структура на IF-THEN:
IF condition THEN Block of code END IF;
Също така можем да запазим кратък блок IF –THEN на един ред като този.
IF big > small THEN temp: = big; END IF;
Прилагане на код с IF-THEN:
DECLARE i number(10,2) := 15; BEGIN -- checking the condition IF( i > 2 ) THEN -- true condition dbms_output.put_line('i is greater than 1 ' ); END IF; dbms_output.put_line('the numeric value of i is '|| i); END; /
Резултатът от горния код трябва да бъде:
# 2) АКО-ТОГАВА ДРУГО: Това е следващата форма на оператора IF, която има ключовата дума ELSE, а след това следващия блок код. Този блок от ELSE изрази не е задължителен и се изпълнява, когато условието е FALSE.
Структура на IF-THEN-ELSE:
IF condition THEN Block of code 1 ELSE Block of code 2 END IF;
Прилагане на код с IF-THEN-ELSE:
DECLARE num number(10,2) := 150; BEGIN -- checking the condition IF( num > 100 ) THEN -- true condition dbms_output.put_line('num is greater than 100 '); ELSE dbms_output.put_line('num is lesser than 100 '); END IF; dbms_output.put_line('value of number is : ' || num); END; /
Резултатът от горния код трябва да бъде:
# 3) IF-THEN-ELSIF: Това условно изявление дава възможност за избор между алтернативите. ELSE ... ELSE блокът код може по желание да дойде след оператора IF-THEN. По този начин той се използва, докато се занимава с множество взаимно изключващи се избори.
Блокът IF-THEN код може да има нито един, нито няколко ELSIF, при условие че се появяват преди израза ELSE. След като срещнем истинско състояние в един ELSIF блок, други ELSE или ELSIF ще бъдат игнорирани.
Структура на IF-THEN-ELSIF:
IF condition 1 THEN Block of code 1 ELSIF condition 2 THEN Block of code 2 ELSE Block of code 3 END IF;
Прилагане на код с IF-THEN-ELSIF:
DECLARE num number(8,2) := 20; BEGIN IF ( num <15 ) THEN dbms_output.put_line('The num is greater than 15' ); ELSIF ( num = 15 ) THEN dbms_output.put_line('The num is 15' ); ELSIF ( num <= 20 ) THEN dbms_output.put_line('The num is less than equal to 20'); ELSE dbms_output.put_line('The num is invalid '); END IF; dbms_output.put_line('The num is : '|| num); END; /
Резултатът от горния код е:
# 4) СЪОБЩЕНИЕ: Тази условна инструкция ще избере един блок код от възможностите за избор. Подобно на операторите IF, CASE не използва булево въвеждане, а израз, който помага да се избере една от опциите.
Последният избор на изявлението CASE е този по подразбиране. CASE STATEMENT е по-ефективен и по-малко дълъг в сравнение с IF изявленията.
СТРУКТУРА НА ДЕЛОТО:
CASE selector WHEN 'condition 1' THEN block of code 1; WHEN 'condition2' THEN block of code 2; WHEN 'condition 3' THEN block of code 3; ... ELSE default case END CASE;
Прилагане на код с CASE STATEMENT:
DECLARE age number(5) := 15; BEGIN CASE age when '1' then dbms_output.put_line('Infant'); when '5' then dbms_output.put_line('In school'); when '15' then dbms_output.put_line('High school'); else dbms_output.put_line('Qualified for class 10 '); END CASE; END; /
Резултатът от горния код е:
# 5) ТЪРСЕН СЛУЧАЙ Декларация: Този условен оператор е лишен от никакъв селектор и блокът WHEN на кода дава само булеви резултати, а не никаква стойност на други типове данни.
Структура на ТЪРСЕНО ДЕЛО Декларация:
CASE WHEN 'condition 1' THEN block of code 1; WHEN 'condition 2' THEN block of code 2; WHEN 'condition 3' THEN block of code 3; ... ELSE default case END CASE;
Прилагане на код с ТЪРСЕН КРАЙ Декларация:
DECLARE model varchar(10) := '4'; BEGIN case when model = '1' then dbms_output.put_line('FIAT'); when model = '2' then dbms_output.put_line('TOYOTA'); when model = '3' then dbms_output.put_line('MARUTI'); when model = '4' then dbms_output.put_line('HYUNDAI'); else dbms_output.put_line('Premium MODEL'); end case; END; /
Резултатът от горния код трябва да бъде:
# 6) ГНЕЗДА, АКО-ТОГАВА ДРУГО: Тази условна декларация дава възможност за използване на ELSE IF или IF блок в друг IF или ELSE IF.
Структура на NESTED IF-THEN-ELSE:
IF condition 1 THEN Block of code 1 IF condition 2 THEN Block of code 2 END IF; ELSE Block of code 3 when condition 1 is false END IF;
Прилагане на код с NESTED IF-THEN-ELSE:
DECLARE i number(10,2) := 65; j number(5) := 10; BEGIN -- checking the condition IF( i > 50 ) THEN -- if true move to the next IF statement IF( j <15 ) THEN dbms_output.put_line('In the nested if block' ); END IF; END IF; dbms_output.put_line('The value of first number is : ' || i ); dbms_output.put_line('The value of second number is : ' || j ); END; /
Резултатът от горния код трябва да бъде:
Итеративно изявление в PL SQL
Докато внедряваме логика в PL / SQL, може да се наложи да обработим блок код многократно няколко пъти. Това се постига с помощта на оператори LOOP. Това са три вида, FOR-LOOP, WHILE-LOOP и LOOP.
# 1) PL SQL LOOPS
LOOP има основна структура, както е показано по-долу:
LOOP Block of code END LOOP;
След всяка итерация програмният поток сочи обратно към горната част на цикъла, докато се изпълни определено условие. В случай, че искаме да излезем от цикъла поради ситуация, в този случай може да се използва инструкция EXIT.
# 2) PL SQL, ДОКАТО ЛИП
Този цикъл ще изпълнява блок от код няколко пъти, докато условието е валидно. В началото на всяка итерация се проверява състоянието на цикъла. Ако е изпълнено, блокът с код се изпълнява.
Ако условието е нула или не е изпълнено, цикълът се избягва и се изпълнява следващият блок код.
Структура на WHILE LOOP:
WHILE condition LOOP Block of code END LOOP;
Прилагане на код с WHILE LOOP:
DECLARE num number(10,1) := 3; BEGIN WHILE num <4 LOOP dbms_output.put_line('The value of number: ' || num); num := num + 1; END LOOP; END; /
Резултатът от горния код трябва да бъде:
# 3) PL SQL FOR LOOP
Този тип цикъл позволява изпълнението на блок код до определен брой пъти. Началната стъпка се изпълнява веднъж. Това се използва предимно за инициализация и деклариране на променливите на цикъла. След това се проверяват граничните стойности (начален и краен диапазон). Ако условието е изпълнено, блокът с код вътре в LOOP ще бъде изпълнен. Ако не, програмният поток се премества в следния блок на код след цикъла.
След една итерация броячът на цикъла се увеличава или намалява с един. Целият процес продължава, докато условието на цикъла не бъде изпълнено. Тъй като условието става FALSE, цикълът завършва.
В PL / SQL началният и крайният диапазон на цикъла могат да бъдат променени по време на изпълнение. Броячът за цикъла трябва да бъде цяло число, число и т.н. (които могат да бъдат увеличени или намалени числено). Началната стойност на брояча може да бъде произволно число.
Структура на FOR LOOP:
FOR counter IN start_value .. end_value LOOP Block of code 1 END LOOP;
Прилагане на кода на FOR LOOP:
DECLARE num number(10,1); BEGIN FOR num in 1.. 5 LOOP dbms_output.put_line('The num is:' || num); END LOOP; END; /
Резултатът от горния код трябва да бъде:
# 4) NESTED LOOP
Този тип изявления позволява един цикъл над другия. Структурата на външната и вътрешната верига може да бъде от един и същ или различен тип. След всяко обхождане и двата цикъла трябва да се изпълняват успешно.
Структура на вложен цикъл:
LOOP (outer) Block of code 1 LOOP (inner) Block of code 2 END LOOP; END LOOP;
Прилагане на код с NESTED LOOP:
BEGIN FOR i IN 1..2 LOOP FOR j IN 1..2 LOOP DBMS_OUTPUT.PUT_LINE('The value of i is ' || i); DBMS_OUTPUT.PUT_LINE('The value of j is ' || j); END LOOP; END LOOP; END; /
Резултатът от горния код трябва да бъде:
Циклични етикети в PL / SQL
В PL / SQL имаме разпоредба за етикетиране на цикли, което увеличава четливостта и значението на кода. Етикетът е представен с двойни ъглови скоби ( << и >> ) и са споменати в горната част на изявлението LOOP. Етикетът може да бъде поставен и в края на LOOP.
Етикетът може да бъде описан и за изрази EXIT, докато излиза от цикъла.
Структура на ЕТИКЕТИТЕ:
<> LOOP Block of Code END LOOP;
Прилагане на код с LOOP LABEL:
BEGIN <> FOR i IN 1..2 LOOP <> FOR j IN 1..2 LOOP DBMS_OUTPUT.PUT_LINE('The value of i is ' || i); DBMS_OUTPUT.PUT_LINE('The value of j is ' || j); END LOOP; END LOOP; END; /
Изявления за контрол на последователността
Контролният оператор се използва за модифициране на потока на изпълнение на програмата.
# 1) ИЗХОД
Оператор EXIT изрично прекъсва цикъл. Когато EXIT бъде намерен в цикъла, цикълът се прекъсва и програмният поток се премества в следващия блок с код. В условия, в които използваме вложени цикли, операторът EXIT първо ще прекрати вътрешния цикъл и след това ще изпълни блока с код, който се появява непосредствено след него.
Прилагане на код с EXIT:
DECLARE num number(10,1) := 15; BEGIN -- loop condition WHILE num <20 LOOP dbms_output.put_line ('The num is: ' || num); num := num + 1; IF mod(num, 2) = 0 THEN -- exit from loop EXIT; END IF; END LOOP; END; /
Резултатът от горния код трябва да бъде:
# 2) ПРОДЪЛЖАВА
Това изявление за управление позволява на цикъла да излезе и да премине към следващата итерация, която трябва да се осъществи.
Прилагане на код с ПРОДЪЛЖАВА:
DECLARE num number(10,1) := 5; BEGIN -- while loop execution WHILE num <9 LOOP dbms_output.put_line ('The number is : ' || num); num := num + 1; IF mod(num,2) = 0 THEN num := num + 1; CONTINUE; END IF; END LOOP; END; /
Резултатът от горния код трябва да бъде:
# 3) ГОТО
Операторът GOTO премества контролата в уникален етикетиран блок от код безусловно. Не е добра техника за програмиране да се използват GOTO изрази, защото намалява четливостта и проследимостта на кода.
Структура на GOTO:
GOTO 60; .. .. <> Block of code 1;
Прилагане на кодиране с оператора GOTO:
BEGIN GOTO message_two; <> DBMS_OUTPUT.PUT_LINE( 'PLSQL Tutorial' ); GOTO message_third; <> DBMS_OUTPUT.PUT_LINE( 'Software Test Help!' ); GOTO message_one; <> DBMS_OUTPUT.PUT_LINE( 'PLSQL Control Statement' ); END;
Резултатът от горния код трябва да бъде:
често задавани въпроси
Въпрос # 1) Какво представлява контролната инструкция в PL / SQL?
Отговор: Контролните оператори в PL / SQL са от трите типа - циклични оператори, последователни оператори и контролни оператори. Цикълът се състои от WHILE LOOP, FOR LOOP и basic LOOP.
Q # 2) Как проверявате за равенство в PL / SQL?
Отговор: В PL / SQL имаме оператор за равенство, който проверява за равенство.
Например,
SELECT NAME FROM EMPLOYEE WHERE AGE = 50;
В # 3) Как да спрете безкраен цикъл в PL / SQL?
Отговор: Можем да спрем безкраен цикъл в PL / SQL с помощта на изрази EXIT. Трябва да държим инструкциите EXIT в цикъла, а не извън цикъла.
В # 4) Каква е целта на условната структура за управление в PL / SQL?
Отговор: Условната структура за управление дава възможност за управление на потока на програмата в зависимост от някои критерии. По този начин кодът в програмата не работи последователно. Блок код се изпълнява въз основа на условието.
В # 5) Кои са 6-те релационни оператора?
Отговор: Релационните оператори на PL / SQL са =,,! =, ==.
В # 6) Какви са различните видове оператори?
Отговор: Различните видове оператори в PL / SQL са изброени по-долу:
- Побитови оператори
- Оператори за присвояване
- Аритметични оператори
- Релационни оператори
- Логически оператори
Заключение
Ние разгледахме голяма част от PL / SQL в този урок, който се занимава с теми като множеството оператори и тяхното значение с примери за кодове.
Също така, ние подробно проучихме PL SQL контролните изявления. Изявленията за контрол се състоят от програмните структури като итерация, състояние и последователност.
В следващия урок ще обсъдим PL SQL процедурите, функциите, курсорите и много други свързани теми.
Препоръчително четене
- PL SQL Урок за начинаещи с примери | Какво е PL / SQL
- Оператори на Python
- Условни изявления на Unix: ако тогава други и релационни оператори
- Изявления за контрол на Python (Python Continue, Break and Pass)
- Урок за условни изявления на C #
- Контрол на източника или контрол на версиите в DevOps (Урок за видео част 2 - Блок 2)
- Цикли в C #: Контролни изявления и различни цикли с примери
- Tortoise SVN Tutorial: Ревизии в кодовото хранилище