„Oracle PL / SQL IF THEN LSE“ pareiškimas: ELSIF, NESTED-IF

Kas yra sprendimų priėmimo pareiškimai?

Sprendimų priėmimo teiginiai yra tie, kurie nuspręs SQL sakinių srauto valdymą pagal sąlygas. Tai suteikia programuotojui geresnę kontrolę, kaip užkirsti kelią tam tikram kodui vykdyti (1 diagrama) arba pasirinkti norimą kodą pagal sąlygą (2 diagrama). Žemiau pateikiamas paveikslėlis „Sprendimų priėmimo pareiškimas“.

Sprendimų priėmimo pareiškimo schema

Sprendimų priėmimo pareiškimų tipai:

„Oracle“ pateikia šiuos sprendimus priimančių sprendimų tipus.

  • JEI TADA
  • JEI-TAD KITA
  • JEI-TAD-ELSIF
  • LIKTAS-JEI
  • ATVEJIS
  • IEŠKOTAS ATVEJAS

Šioje pamokoje sužinosite

  • Įvadas į sprendimų priėmimo pareiškimus
  • JEI-TADA pareiškimas
  • „IF-THEN-Other“ pareiškimas
  • IF-THEN-ELSIF pareiškimas
  • NESTED-IF pareiškimas

JEI-TADA pareiškimas

IF-THEN sakinys dažniausiai naudojamas tam tikram kodų skyriui vykdyti tik tada, kai įvykdoma sąlyga.

Sąlyga turėtų gauti loginę reikšmę (teisinga / klaidinga). Tai yra pagrindinis sąlyginis sakinys, kuris leis ORACLE vykdyti / praleisti tam tikrą kodo dalį pagal iš anksto nustatytas sąlygas.

JEIGU Tuomet teiginių sintaksė:

IF THEN-executed only if the condition returns TRUEEND if;
  • Pirmiau pateiktoje sintaksėje po raktinio žodžio „IF“ bus nurodyta sąlyga, kurios vertė bus „TRUE“ / „FALSE“.
  • Valdiklis vykdys tik tuo atveju, jei sąlyga grąžins reikšmę .
  • Jei sąlyga įvertinama kaip , tada SQL praleis ir pradės vykdyti kodą šalia bloko „END IF“.

Pastaba: Kai tik būklė įvertinta kaip „NULL“, SQL „NULL“ traktuos kaip „FALSE“.

1 pavyzdys : Šiame pavyzdyje mes atspausdinsime pranešimą, kai skaičius bus didesnis nei 100. Tam mes vykdysime šį kodą

Norėdami atsispausdinti pranešimą, kai skaičiaus vertė yra didesnė nei 100, vykdome šį kodą.

DECLAREa NUMBER :=10;BEGINdbms_output.put_line(‘Program started.' );IF( a> 100 ) THENdbms_output.put_line('a is greater than 100');END IF;dbms_output.put_line(‘Program completed.');END;/

Kodo paaiškinimas:

  • 2 kodo eilutė: kintamojo „a“ paskelbimas duomenų tipu „NUMBER“ ir inicijavimas reikšme „10“.
  • 4 kodo eilutė: išspausdinkite teiginį „Programa paleista“.
  • 5 kodo eilutė: tikrinama sąlyga, ar kintamasis „a“ yra didesnis nei „100“.
  • Kodo 6 eilutė: jei „a“ yra didesnis nei „100“, tada bus spausdinama „a“ yra didesnė nei 100 “. Jei „a“ yra mažesnis arba lygus 100, sąlyga nepavyksta, todėl aukščiau pateiktas spausdinimo teiginys ignoruojamas.
  • 8 kodo eilutė: ataskaitos „Programa baigta“ spausdinimas.

Kodo išvestis:

Program started.Program completed. 

2 pavyzdys: Šiame pavyzdyje mes atspausdinsime pranešimą, jei tam tikra abėcėlė yra anglų kalbos balsiuose (A, E, I, O, U).

Norėdami išspausdinti pranešimą, kai nurodytas simbolis yra „Balsis“, vykdome šį kodą.

DECLAREa CHAR(1) :=’u’;BEGINIF UPPER(a) in ('A’,'E','I','0','U' ) THENdbms_output.put_line(‘The character is in English Vowels');END IF;END;/

Kodo paaiškinimas:

  • 2 kodo eilutė: Kintamojo „a“ paskelbimas „CHAR“ dydžio „1“ duomenų tipu ir jo inicijavimas reikšme „u“.
  • 4 kodo eilutė: tikrinama sąlyga, ar sąraše yra kintamasis „a“ („A“, „E“, „I“, „O“, „U“).
  • „A“ reikšmė prieš palyginant buvo paversta didžiąja raide, kad būtų galima palyginti mažąsias ir mažąsias raides.
  • 5 kodo eilutė: Jei sąraše yra „a“, bus išspausdintas teiginys „Simbolis yra angliškomis balsėmis“. Jei sąlyga nepavyko, ši programa neduos jokios išvesties, nes už IF-THEN bloko mes neišdavėme jokio spausdinimo pareiškimo.

Kodo išvestis:

The character is in English Vowels

„IF-THEN-Other“ pareiškimas

  • IF-THEN-ELSE sakinys daugiausia naudojamas norint pasirinkti dvi alternatyvas pagal sąlygą.
  • Žemiau pateikiamas IF-THEN-ELSE sakinio sintaksės atvaizdavimas.

IF-THEN-ELSE teiginių sintaksė:

IF THEN -executed only if the condition returns TRUE ELSE -execute if the condition failed (returns FALSE) END if;
  • Pirmiau pateiktoje sintaksėje po raktinio žodžio „IF“ bus nurodyta sąlyga, kurios vertė bus „TRUE“ / „FALSE“.
  • Valdiklis vykdys tik tada, jei sąlyga grąžins reikšmę .
  • Jei būklė įvertinama kaip , tada SQL vykdys .
  • Bet kokiu atveju bus vykdomas vienas iš dviejų veiksmų blokų.

Pastaba: kai tik būklė bus „NULL“, SQL „NULL“ traktuos kaip „FALSE“.

1 pavyzdys : Šiame pavyzdyje mes atspausdinsime pranešimą, nesvarbu, ar nurodytas skaičius yra nelyginis, ar lyginis.

DECLAREa NUMBER:=11;BEGINdbms_output.put_line (‘Program started');IF( mod(a,2)=0) THENdbms_output.put_line('a is even number' );ELSEdbms_output.put_line('a is odd number1);END IF;dbms_output.put_line (‘Program completed.’);END;/

Kodo paaiškinimas:

  • 2 kodo eilutė: kintamojo „a“ paskelbimas duomenų tipu „NUMBER“ ir inicijavimas reikšme „11“.
  • 4 kodo eilutė: išspausdinkite teiginį „Programa paleista“.
  • 5 kodo eilutė: tikrinama sąlyga, ar kintamojo „a“ modulis „2“ yra 0.
  • Kodo 6 eilutė: jei „0“, tada bus išspausdintas „a yra lyginis skaičius“.
  • 7 kodo eilutė: jei modulio vertė nėra lygi „0“, sąlyga grąžina , taigi bus išspausdintas pranešimas „a nelyginis skaičius“.
  • Kodo eilutė10: ataskaitos „Programa baigta“ spausdinimas

Kodo išvestis:

Program started.a is odd numberProgram completed. 

IF-THEN-ELSIF pareiškimas

  • IF-THEN-ELSIF teiginys dažniausiai naudojamas ten, kur reikėtų rinktis vieną alternatyvą iš alternatyvų rinkinio, kai kiekviena alternatyva turi savo sąlygas.
  • Pirmosios sąlygos, kurios grąžina , bus įvykdytos, o likusios sąlygos bus praleistos.
  • IF-THEN-ELSIF sakinyje gali būti „ELSE“ blokas. Šis „ELSE“ blokas bus vykdomas, jei nebus įvykdyta nė viena iš sąlygų.

Pastaba : ELSE blokas šiame sąlyginiame sakinyje yra neprivalomas. Jei nėra ELSE bloko ir nė viena iš sąlygų nėra įvykdyta, valdiklis praleis visą veiksmų bloką ir pradės vykdyti likusią kodo dalį.

IF-THEN-ELSIF teiginių sintaksė:

IF THEN-executed only if the condition returns TRUE ELSIF  ELSIF  ELSE -optionalEND if;
  • Pirmiau pateiktoje sintaksėje valdiklis vykdys tik tuo atveju, jei sąlyga1 grąžins reikšmę .
  • Jei sąlyga1 netenkinama, valdiklis patikrins, ar yra sąlyga2.
  • Valdiklis išeis iš IF teiginio šiais dviem atvejais.
    • Kai valdiklis rado bet kokią sąlygą, kuri grąžina reikšmę . Tokiu atveju bus vykdomas atitinkamas action_block, o valdiklis išeis iš šio IF sakinių bloko ir pradės vykdyti likusį kodą.
    • Kai nė viena iš sąlygų nebus įvykdyta, tada valdiklis vykdys ELSE bloką, jei jis yra, tada išeis iš IF sakinio.

Pastaba: kai tik būklė bus „NULL“, SQL „NULL“ traktuos kaip „FALSE“.

1 pavyzdys: be ELSE bloko

Šiame pavyzdyje mes atspausdinsime pažymį pagal pateiktus pažymius be kitos sąlygos (pažymėti> = 70 A laipsnį, pažymėti> = 40 ir pažymėti <70 B laipsnį, pažymėti> = 35 ir pažymėti <40 C laipsnį).

DECLAREmark NUMBER :=55;BEGINdbms_output.put_line(‘Program started.’ );IF( mark >= 70) THENdbms_output.put_line(‘Grade A’);ELSIF(mark >= 40 AND mark < 70) THENdbms_output.put_line(‘Grade B');ELSIF(mark >=35 AND mark < 40) THENdbms_output.put_line(‘Grade C’);END IF;dbms_output.put_line(‘Program completed.’);END;/

Kodo paaiškinimas:

  • 2 kodo eilutė: kintamojo „mark“ paskelbimas duomenų tipu „NUMBER“ ir jo inicijavimas reikšme „55“.
  • 4 kodo eilutė: išspausdinkite teiginį „Programa paleista“.
  • 5 kodo eilutė: tikrinant sąlygą1, ar „ženklas“ yra didesnis ar lygus 70.
  • 7 kodo eilutė: Kadangi sąlyga1 nepavyko, tada tikrinama sąlyga2 '70> ženklas> = 40 '.
  • 8 kodo eilutė: „condtition2“ grąžina reikšmę „TRUE“, todėl bus išspausdintas pranešimas „B laipsnis“.
  • Kodo eilutė12: ataskaitos „Programa baigta“ spausdinimas.
  • Tokiu atveju būsena 3 'ženklas <35' bus praleista, nes valdiklis rado vieną sąlygą, kuri grąžina reikšmę prieš sąlygą3.

Kodo išvestis:

Program started.Grade BProgram completed.

2 pavyzdys : su ELSE bloku

Šiame pavyzdyje pažymėtume pažymį pagal pateiktus ženklus su kita sąlyga (pažymėti> = 70 A laipsnį, pažymėti> = 40 ir pažymėti <70 B laipsnį, pažymėti> = 35 ir pažymėti <40 laipsnį C, dar kitaip „Ne klasė“).

DECLAREmark NUMBER :=25;BEGINdbms_output.put_line(‘Program started.’ );IF( mark >= 70) THENdbms_output.put_line(‘Grade A’);ELSIF(mark >= 40 AND mark < 70) THENdbms_output.put_line(‘Grade B');ELSIF(mark >=35 AND mark < 40) THENdbms_output.put_line(‘Grade C);ELSEdbms_output.put_line(‘No Grade’);END IF;dbms_output.put_line(‘Program completed.' );END;/

Kodo paaiškinimas:

  • 2 kodo eilutė: kintamojo „mark“ paskelbimas duomenų tipu „NUMBER“ ir jo inicijavimas reikšme „25“.
  • 4 kodo eilutė: išspausdinkite teiginį „Programa paleista“.
  • 5 kodo eilutė: patikrinkite 1 sąlygą, ar „ženklas“ yra didesnis ar lygus 70.
  • 7 kodo eilutė: Kadangi sąlyga1 nepavyko, tada tikrinama sąlyga2 '70> ženklas> = 40 '.
  • 8 kodo eilutė: Kadangi sąlyga2 nepavyko, tada tikrinama sąlyga3 '40> ženklas> = 35 '.
  • 11 kodo eilutė: Kadangi visos sąlygos yra nesėkmingos, valdiklis dabar patikrins, ar nėra ELSE bloko, ir jis išspausdins pranešimą „No Grade“ iš ELSE bloko.
  • Kodo eilutė14: ataskaitos „Programa baigta“ spausdinimas.

Kodo išvestis:

Program started.No GradeProgram completed.

NESTED-IF pareiškimas

  • NESTED-IF sakinys iš esmės leidžia programuotojams įdėti vieną ar daugiau sąlygų „IF“ į kitos „IF“ sąlygos , išskyrus įprastus teiginius.
  • Kiekvienoje „IF“ sąlygoje turėtų būti atskiras „END IF“ sakinys, žymintis to konkretaus taikymo srities pabaigą.
  • „IF“ teiginyje artimiausias „END IF“ sakinys bus laikomas tos konkrečios sąlygos galiniu tašku.
  • NESTED-IF paveikslėlis pateiktas žemiau diagramoje.
IF THEN -executed only if the condition returns TRUE  IF  THEN  END IF; -END IF corresponds to condition2END IF; -END IF corresponds to condition1
Sintaksės paaiškinimas:
  • Pirmiau pateiktoje sintaksėje išoriniame IF veiksmo bloke yra dar vienas IF sakinys.
  • Sąlyga1 grąžina reikšmę , tada valdiklis vykdys ir patikrins sąlygą2.
  • Jei sąlyga2 taip pat grąžina reikšmę , tada bus vykdoma ir .
  • Tuo atveju, jei sąlyga2 įvertins , tada SQL praleis .

Čia pamatysime „Nested If“ pavyzdį -

„Nested- If“ teiginio pavyzdys: didžiausias iš trijų skaičių

Šiame pavyzdyje mes išspausdinsime didžiausią iš trijų skaičių naudodami „Nested-If“ sakinį. Skaičiai bus priskirti deklaravimo dalyje, kaip matote žemiau esančiame kode, ty Skaičius = 10,15 ir 20, o maksimalus skaičius bus gautas naudojant įdėtinius teiginius.

DECLAREa NUMBER :=10;b NUMBER :=15;c NUMBER :=20;BEGINdbms_output.put_line(‘Program started.' );IF( a> b)THEN/*Nested-if l */dbms_output.put_line(’Checking Nested-IF 1');IF( a> c ) THENdbms_output.put_line(‘A is greatest’);ELSEdbms_output.put_line(‘C is greatest’);END IF;ELSE/*Nested-if2 */dbms_output.put_line('Checking Nested-IF 2' );IF( b> c ) THENdbms_output.put_line(’B is greatest' );ELSEdbms_output.put_line(’C is greatest' );END IF;END IF;dbms_output.put_line(‘Program completed.’ );END;/

Kodo paaiškinimas:

  • 2 kodo eilutė: kintamojo „a“ paskelbimas duomenų tipu „NUMBER“ ir inicijavimas reikšme „10“.
  • 3 kodo eilutė: kintamojo „b“ paskelbimas duomenų tipu „NUMBER“ ir inicijavimas reikšme „15“.
  • 4 kodo eilutė: kintamojo „c“ paskelbimas duomenų tipu „NUMBER“ ir inicijavimas reikšme „20“.
  • Kodo 6 eilutė: išspausdinkite teiginį „Programa pradėta“ (6 eilutė).
  • 7 kodo eilutė: patikrinkite sąlygą1, ar „a“ yra didesnė už „b“ (7 eilutė).
  • 10 kodo eilutė: jei „a“ yra didesnis nei „b“, tada sąlygoje „įdėta - jei 1“ bus patikrinta, ar „a“ yra didesnė nei „c“ (10 eilutė).
  • Kodo 13 eilutė: Jei vis tiek „a“ yra didesnis, tada bus išspausdintas pranešimas „A yra didžiausias“ (11 eilutė). Jei nevykdoma 2 sąlyga, bus išspausdinta „C yra didžiausia“ (13 eilutė).
  • 18 kodo eilutė: Jei sąlyga1 pateikia klaidingą, tada sąlyga lauke „įdėta, jei 2“ patikrins, ar „b“ yra didesnė už „c“ (18 eilutė).
  • Kodo 21 eilutė: Jei „b“ yra didesnis nei „c“, tada bus išspausdintas pranešimas „B yra didžiausias“ (19 eilutė), kitu atveju, jei nepavyks 2 sąlyga, bus spausdinama „C yra didžiausia“ (21 eilutė).
  • 24 kodo eilutė: ataskaitos „Programa baigta“ spausdinimas (24 eilutė).

Kodo išvestis:

Program started.Checking Nested-IF 2C is greatestProgram completed.

Santrauka

Šiame skyriuje mes sužinojome skirtingus sprendimų priėmimo teiginius, jų sintaksę ir pavyzdžius. Žemiau esančioje lentelėje pateikiama įvairių mūsų aptartų sąlyginių teiginių santrauka.

TIPAS

APIBŪDINIMAS

NAUDOJIMAS

JEI TADA

Tikrina Būlo sąlygą, jei bus įvykdytas TRUE kodas „THEN“ bloke.

Norėdami praleisti, / vykdykite konkretų kodą pagal sąlygą.

JEI-TAD KITA

Tikrina Būlo sąlygą, jei lauke „THEN“ bus vykdomas TRUE kodas, jei bloke „ELSE“ bus vykdomas klaidingas kodas.

Tinkamiausia „THIS-OR-THAT“ būsena.

JEI-TAD-ELSIF

Tikrina Būlo sąlygą eilės tvarka. Bus įvykdytas pirmasis blokas sekoje, kuris grąžins TRUE sąlygą. Jei nė viena iš sekos sąlygų nėra TIESA, tada kodas „ELSE“ bloke bus vykdomas.

Naudojamas pasirinkti iš daugiau nei dviejų alternatyvų.

LIGDAS-JEI

Leidžiama vieną ar daugiau teiginių „IF-THEN“ arba „IF-THEN-ELSIF“ kituose „IF-THEN“ arba „IF-THEN-ELSIF“ sakiniuose.

Daugiausia naudojamas esant įterptoms sąlygoms.

Įdomios straipsniai...