Oracle PL / SQL IF TAD Cits paziņojums: ELSIF, NESTED-IF

Satura rādītājs:

Anonim

Kas ir lēmumu pieņemšanas paziņojumi?

Lēmumu pieņemšanas paziņojumi ir tie, kas izlems SQL pārskatu plūsmas kontroli, pamatojoties uz nosacījumiem. Tas dod programmētājam labāku kontroli, lai novērstu noteikta koda izpildi (1. diagramma) vai vajadzīgā koda izvēli, pamatojoties uz nosacījumu (2. diagramma). Zemāk ir attēlots "Lēmuma pieņemšanas paziņojums".

Lēmumu pieņemšanas paziņojumu diagramma

Lēmumu pieņemšanas paziņojumu veidi:

Oracle nodrošina šāda veida lēmumu pieņemšanas paziņojumus.

  • JA TAD
  • JA-TAD-CITU
  • JA-TAD-ELSIF
  • NESTED-IF
  • LIETA
  • MEKLĒTA LIETA

Šajā apmācībā jūs uzzināsiet

  • Ievads lēmumu pieņemšanas paziņojumos
  • IF-TAD paziņojums
  • IF-THEN-CITAS paziņojums
  • IF-THEN-ELSIF paziņojums
  • NESTED-IF paziņojums

IF-TAD paziņojums

IF-THEN paziņojums galvenokārt tiek izmantots, lai izpildītu noteiktu kodu sadaļu tikai tad, ja nosacījums ir izpildīts.

Nosacījumam vajadzētu iegūt Būla vērtību (True / False). Tas ir pamata nosacījuma paziņojums, kas ļaus ORACLE izpildīt / izlaist noteiktu koda daļu, pamatojoties uz iepriekš definētiem nosacījumiem.

SINAKSTS JA TAD paziņojumiem:

IF THEN-executed only if the condition returns TRUEEND if;
  • Iepriekš minētajā sintaksē pēc atslēgvārda “IF” sekos nosacījums, kura vērtība ir “TRUE” / “FALSE”.
  • Vadīkla izpildīs tikai tad, ja nosacījums atgriež vērtību .
  • Gadījumā, ja nosacījums tiek novērtēts kā , SQL izlaiž un sāks izpildīt kodu blakus blokam 'END IF'.

Piezīme. Ikreiz, kad nosacījums tiek novērtēts kā “NULL”, SQL “NULL” uzskatīs par “FALSE”.

1. piemērs : Šajā piemērā mēs drukāsim ziņojumu, ja skaitlis ir lielāks par 100. Lai to izdarītu, mēs izpildīsim šādu kodu

Lai izdrukātu ziņojumu, ja skaitļa vērtība pārsniedz 100, mēs izpildām šādu kodu.

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;/

Koda skaidrojums:

  • 2. koda rindiņa: mainīgā “a” deklarēšana par “NUMBER” datu tipu un inicializēšana ar vērtību “10”.
  • 4. koda rindiņa: paziņojuma "Programma sākta" izdrukāšana.
  • 5. koda rindiņa: pārbauda nosacījumu, vai mainīgais “a” ir lielāks par “100”.
  • 6. koda rindiņa: ja “a” ir lielāks par “100”, tad tiks drukāts “a” ir lielāks par 100 ”. Ja 'a' ir mazāks vai vienāds ar 100, tad nosacījums neizdodas, tāpēc iepriekšējais drukas paziņojums tika ignorēts.
  • Kodu 8. rindiņa: paziņojuma "Programma pabeigta" izdrukāšana.

Koda izvade:

Program started.Program completed. 

2. piemērs: Šajā piemērā mēs drukāsim ziņojumu, ja dots alfabēts ir angļu patskaņos (A, E, I, O, U).

Lai izdrukātu ziņojumu, ja norādītā rakstzīme ir patskaņa, mēs izpildām šādu kodu.

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;/

Koda skaidrojums:

  • 2. koda rindiņa: mainīgā “a” deklarēšana par “CHAR” lieluma “1” datu tipu un inicializēšana ar vērtību “u”.
  • Kodu rinda 4: Nosacījuma pārbaude, vai mainīgais “a” ir sarakstā (“A”, “E”, “I”, “O”, “U”).
  • Pirms salīdzināšanas “a” vērtība ir pārveidota par lielo burtu, lai salīdzinājums būtu nejutīgs.
  • 5. koda rindiņa: ja sarakstā ir “a”, tiks izdrukāts paziņojums “Raksts ir angļu patskaņos”. Ja nosacījums neizdevās, tad šī programma nedos nekādu izvadi, jo ārpus IF-THEN bloka mēs neesam izdevuši nevienu drukas paziņojumu.

Koda izvade:

The character is in English Vowels

IF-THEN-CITAS paziņojums

  • IF-THEN-ELSE paziņojumu galvenokārt izmanto, lai izvēlētos starp divām alternatīvām, pamatojoties uz nosacījumu.
  • Zemāk ir IF-THEN-ELSE paziņojuma sintakses attēlojums.

IF-THEN-ELSE paziņojumu sintakse:

IF THEN -executed only if the condition returns TRUE ELSE -execute if the condition failed (returns FALSE) END if;
  • Iepriekš minētajā sintaksē pēc atslēgvārda “IF” sekos nosacījums, kura vērtība ir “TRUE” / “FALSE”.
  • Vadīkla izpildīs tikai tad, ja nosacījums atgriež vērtību .
  • Gadījumā, ja nosacījums tiek novērtēts kā , tad SQL izpildīs .
  • Jebkurā gadījumā tiks izpildīts viens no diviem darbības blokiem.

Piezīme. Ikreiz, kad nosacījums tiek novērtēts kā “NULL”, SQL “NULL” uzskatīs par “FALSE”.

1. piemērs : Šajā piemērā mēs drukāsim ziņojumu neatkarīgi no tā, vai dotais skaitlis ir nepāra vai pāra.

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;/

Koda skaidrojums:

  • 2. koda rindiņa: mainīgā “a” deklarēšana par “NUMBER” datu tipu un inicializēšana ar vērtību “11”.
  • 4. koda rindiņa: paziņojuma "Programma sākta" izdrukāšana.
  • 5. koda rindiņa: pārbauda nosacījumu, vai mainīgā “a” ar “2” modulis ir 0.
  • Koda rinda 6: Ja “0”, tad tiks drukāts “a ir pāra skaitlis”.
  • Kodu rinda 7: Ja moduļa vērtība nav vienāda ar “0”, tad nosacījums atgriež , tāpēc tiks izdrukāts ziņojums "a ir nepāra skaitlis".
  • 10. koda rindiņa: Izraksta “Programma pabeigta” izdrukāšana

Koda izvade:

Program started.a is odd numberProgram completed. 

IF-THEN-ELSIF paziņojums

  • IF-THEN-ELSIF paziņojums galvenokārt tiek izmantots, ja jāizvēlas viena alternatīva no alternatīvu kopas, kur katrai alternatīvai ir savi nosacījumi, kas jāievēro.
  • Pirmie nosacījumi, kas atgriež vērtību , tiks izpildīti, un pārējie nosacījumi tiks izlaisti.
  • IF-THEN-ELSIF paziņojumā var būt bloks “ELSE”. Šis “ELSE” bloks tiks izpildīts, ja neviens no nosacījumiem nav izpildīts.

Piezīme : ELSE bloks šajā nosacītajā paziņojumā nav obligāts. Ja nav ELSE bloka un neviens no nosacījumiem nav izpildīts, tad kontrolieris izlaidīs visu darbību bloku un sāks izpildīt atlikušo koda daļu.

IF-THEN-ELSIF paziņojumu sintakse:

IF THEN-executed only if the condition returns TRUE ELSIF  ELSIF  ELSE -optionalEND if;
  • Iepriekš minētajā sintaksē vadīkla izpildīs tikai tad, ja nosacījums1 atgriež vērtību .
  • Ja 1. nosacījums nav izpildīts, kontrolieris pārbauda 2. nosacījumu.
  • Kontrolieris izies no IF paziņojuma šādos divos gadījumos.
    • Kad kontrolieris atrada jebkuru nosacījumu, kas atgriež vērtību . Šajā gadījumā tiks izpildīts atbilstošais action_block, un kontrolieris izies no šī IF paziņojuma bloka un sāks izpildīt atlikušo kodu.
    • Kad neviens no nosacījumiem nav izpildīts, tad kontrolieris izpildīs ELSE bloku, ja tāds ir, tad izies no IF paziņojuma.

Piezīme. Ikreiz, kad nosacījums tiek novērtēts kā “NULL”, SQL “NULL” uzskatīs par “FALSE”.

1. piemērs: bez ELSE bloka

Šajā piemērā mēs drukāsim atzīmi, pamatojoties uz dotajām atzīmēm bez cita nosacījuma (atzīme> = 70 A pakāpe, atzīme> = 40 un atzīme <70 B pakāpe, atzīme> = 35 un atzīme <40 C pakāpe).

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;/

Koda skaidrojums:

  • 2. koda rindiņa: mainīgā “mark” deklarēšana par “NUMBER” datu tipu un inicializēšana ar vērtību “55”.
  • 4. koda rindiņa: paziņojuma "Programma sākta" izdrukāšana.
  • 5. koda rindiņa: pārbaudot nosacījumu1, vai “atzīme” ir lielāka vai vienāda ar 70.
  • Kodu rinda 7: Tā kā nosacījums1 neizdevās, tiek pārbaudīts nosacījums2 '70> atzīme> = 40'.
  • 8. koda rindiņa: Nosacījums2 atgriež vērtību <ĪSTA>, tādējādi tiks izdrukāts ziņojums 'B pakāpe'.
  • Koda rindiņa12: izdrukāt paziņojumu "Programma pabeigta".
  • Šajā gadījumā nosacījums3 'atzīme <35' tiks izlaista, jo kontrolieris atrada vienu nosacījumu, kas pirms nosacījuma3 atgriež vērtību <ĪSTA>.

Koda izvade:

Program started.Grade BProgram completed.

2. piemērs : ar ELSE bloku

Šajā piemērā mēs drukāsim atzīmi, pamatojoties uz dotajām atzīmēm ar nosacījumu else (atzīme> = 70 A pakāpe, atzīme> = 40 un atzīme <70 B pakāpe, atzīme> = 35 un atzīme <40 C pakāpe, cits “Bez pakāpes”).

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;/

Koda skaidrojums:

  • 2. koda rindiņa: mainīgā “mark” deklarēšana par “NUMBER” datu tipu un inicializēšana ar vērtību “25”.
  • 4. koda rindiņa: paziņojuma "Programma sākta" izdrukāšana.
  • Kodu rinda 5: 1. nosacījuma pārbaude, vai “atzīme” ir lielāka vai vienāda 70.
  • Kodu rinda 7: Tā kā nosacījums1 neizdevās, tiek pārbaudīts nosacījums2 '70> atzīme> = 40'.
  • 8. koda rindiņa: Tā kā nosacījums2 neizdevās, tiek pārbaudīts nosacījums3 '40> mark> = 35 '.
  • 11. koda rindiņa: Tā kā visi nosacījumi nav izpildīti, vadība tagad pārbaudīs ELSE bloka klātbūtni un no ELSE bloka izdrukās ziņojumu “No Grade”.
  • Koda rindiņa14: paziņojuma "Programma pabeigta" izdrukāšana.

Koda izvade:

Program started.No GradeProgram completed.

NESTED-IF paziņojums

  • NESTED-IF paziņojums principā ļauj programmētājiem ievietot vienu vai vairākus nosacījumus “IF” cita “IF” nosacījuma iekšpusē, izņemot parastos paziņojumus.
  • Katram nosacījumam “IF” vajadzētu būt atsevišķam priekšrakstam “END IF”, kas apzīmē konkrētā darbības jomas beigas.
  • “IF” paziņojumā tuvākais “END IF” paziņojums tiks uzskatīts par šī konkrētā nosacījuma galapunktu.
  • NESTED-IF attēlojums ir parādīts zemāk esošajā diagrammā.
IF THEN -executed only if the condition returns TRUE  IF  THEN  END IF; -END IF corresponds to condition2END IF; -END IF corresponds to condition1
Sintakses skaidrojums:
  • Iepriekš minētajā sintaksē ārējais IF savā darbības blokā satur vēl vienu IF paziņojumu.
  • Nosacījums1 atgriež vērtību , tad vadība izpilda un pārbauda nosacījumu2.
  • Ja nosacījums2 atgriež arī vērtību <ĪSTA>, tad tiks izpildīts arī .
  • Gadījumā, ja 2. nosacījums tiek novērtēts kā , tad SQL izlaidīs .

Šeit mēs redzēsim Nested If piemēru -

Nested- If paziņojuma piemērs: lielākais no trim skaitļiem

Šajā piemērā mēs izdrukāsim lielāko no trim skaitļiem, izmantojot Nested-If paziņojumu. Skaitļi tiks piešķirti deklarēšanas daļā, kā redzat zemāk esošajā kodā, ti, Skaitlis = 10,15 un 20, un maksimālais skaits tiks iegūts, izmantojot paziņojumus Ligzdoti-ja.

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;/

Koda skaidrojums:

  • 2. koda rindiņa: mainīgā “a” deklarēšana par “NUMBER” datu tipu un inicializēšana ar vērtību “10”.
  • 3. koda rindiņa: mainīgā “b” deklarēšana par “NUMBER” datu tipu un inicializēšana ar vērtību “15”.
  • 4. koda rindiņa: mainīgā “c” deklarēšana par “NUMBER” datu tipu un inicializēšana ar vērtību “20”.
  • Kodu rinda 6: paziņojuma "Programma sākta" izdrukāšana (6. rinda).
  • Kodu rinda 7: pārbauda nosacījumu1, vai “a” ir lielāks par “b” (7. rindiņa).
  • 10. koda rindiņa: ja 'a' ir lielāks par 'b, tad nosacījums laukā' nested-if 1 'pārbaudīs, vai' a 'ir lielāks par' c '(10. rindiņa).
  • 13. koda rindiņa: ja joprojām “a” ir lielāka, tiks izdrukāts ziņojums “A is great” (11. rinda). Cits, ja 2. nosacījums neizdodas, tiks izdrukāts “C ir vislielākais” (13. rinda).
  • 18. koda rindiņa: Gadījumā, ja nosacījums1 atgriež vērtību “false”, nosacījums “ligzdots - ja 2” pārbaudīs, vai “b” ir lielāks par “c” (18. rindiņa).
  • Kodu rinda 21: Ja “b” ir lielāks par “c”, tad tiks izdrukāts ziņojums “B ir vislielākais” (19. rinda), pretējā gadījumā, ja 2. nosacījums neizdosies, tiks izdrukāta “C ir lielākā” (21. rinda).
  • 24. koda rindiņa: paziņojuma "Programma pabeigta" izdrukāšana (24. rindiņa).

Koda izvade:

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

Kopsavilkums

Šajā nodaļā mēs esam iemācījušies dažādus lēmumu pieņemšanas paziņojumus, to sintaksi un piemērus. Zemāk esošajā tabulā sniegts dažādu mūsu apspriesto nosacīto paziņojumu kopsavilkums.

VEIDS

APRAKSTS

LIETOŠANA

JA TAD

Pārbauda Būla nosacījumu, ja TRUE kods tiks izpildīts blokā 'TAD'.

Lai izlaistu, / izpildiet noteiktu kodu, pamatojoties uz nosacījumu.

JA-TAD-CITU

Pārbauda Būla nosacījumu, ja TRUE kods tiks izpildīts blokā 'TAD', ja blokā 'ELSE' tiek izpildīts viltus kods.

Vispiemērotākais stāvoklī “THIS-OR-THAT”.

JA-TAD-ELSIF

Pārbauda Būla stāvokli secīgā secībā. Tiks izpildīts pirmais bloks secībā, kas atgriež TRUE nosacījumu. Ja neviens no secības nosacījumiem nav PATIESA, tiek izpildīts kods blokā 'ELSE'.

Izmanto, lai pārsvarā izvēlētos no vairāk nekā divām alternatīvām.

NESTED-IF

Atļauj vienu vai vairākus IF-THEN vai IF-THEN-ELSIF paziņojumus citā IF-THEN vai IF-THEN-ELSIF paziņojumā (-os).

Galvenokārt izmanto ligzdotā stāvoklī.