pl sql operators control statements tutorial
Découvrez les différents opérateurs PL SQL et instructions de contrôle comme if-then-else, for loop, while loop, etc. avec des exemples de code:
dans le Commandes PL / SQL tutoriel du Série PL / SQL , nous avons appris les commandes PL SQL INSERT, UPDATE, DELETE et SELECT avec des exemples de programmation.
Dans cet article, nous discuterons des différents opérateurs pris en charge par PL / SQL, tels que les opérateurs relationnels, logiques, arithmétiques et de comparaison. Nous étudierons également les instructions de contrôle largement utilisées en PL / SQL.
La condition PL / SQL et les structures itératives ont été expliquées en détail avec des exemples ici dans ce didacticiel.
meilleur logiciel de base de données gratuit pour windows
Ce que vous apprendrez:
Opérateurs PL SQL
Un opérateur PL SQL demande au compilateur d'effectuer des opérations arithmétiques et logiques à l'aide d'un symbole.
Par défaut, PL / SQL a les types d'opérateurs suivants:
- Arithmétique
- Comparaison
- Logique
- Chaîne de caractères
- Relationnel
# 1) Opérateurs arithmétiques
symbole | La description | |
---|---|---|
sept | ET | conjonction |
+ | Effectue l'ajout de deux opérandes. | |
* | Effectue la multiplication de deux opérandes. | |
/ | Effectue la division de deux opérandes. | |
- | Effectue la soustraction de deux opérandes. | |
** | Effectue une opération exponentielle. |
Implémentation de code avec des opérateurs arithmétiques:
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; /
La sortie du code ci-dessus doit être:
# 2) Opérateurs relationnels
Ces opérateurs effectuent la comparaison et renvoient des valeurs en booléen.
Numéro de série. | symbole | La description |
---|---|---|
un | > | Vérifie si la valeur de l'opérande de gauche est supérieure à celle de droite. |
deux | < | Vérifie si la valeur de l'opérande de droite est supérieure à celle de gauche. |
3 | > = | Vérifie si la valeur de l'opérande gauche est supérieure à égale à droite. |
4 | <= | Vérifie si la valeur de l'opérande de droite est supérieure à celle de gauche. |
5 | = | Vérifie si deux opérandes sont égaux. |
6 | ! =, ~ =, | Vérifie si deux opérandes ne sont pas égaux. |
Implémentation de code avec des opérateurs relationnels:
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; /
La sortie du code ci-dessus doit être:
# 3) Opérateurs de comparaison
Cet opérateur donne la sortie sous la forme d'une valeur vraie, fausse ou nulle en fonction du résultat de la comparaison d'une instruction avec l'autre.
symbole | La description |
---|---|
COMPRIS ENTRE | Vérifie si une valeur se trouve dans une plage. |
DANS | Vérifie si une valeur est égale à un jeu de membres. |
AIMER | Vérifie si une chaîne ou un caractère est similaire à un modèle. |
EST NULL | Vérifie si un opérande est égal à la valeur Null. |
Implémentation de code avec opérateur de comparaison:
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; /
La sortie du code ci-dessus doit être:
# 4) Opérateurs logiques
PL / SQL prend en charge plusieurs opérateurs logiques. Ils agissent sur des opérandes de nature booléenne et donnent également des résultats booléens.
Numéro de série. | symbole | La description |
---|---|---|
un | NE PAS | Connu comme NON logique. Si le résultat est vrai, alors NOT le rend faux. |
deux | ET | Connu sous le nom de ET logique. Si tous les opérandes sont vrais, le résultat est vrai. |
3 | OU | Connu sous le nom de OU logique. Si l'un des opérandes est vrai, le résultat est vrai. |
Implémentation de code avec des opérateurs logiques:
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; /
La sortie du code ci-dessus doit être:
Priorité de l'opérateur
La priorité des opérateurs PL SQL est définie pour définir comment une opération impliquant un ou plusieurs opérateurs ou plusieurs opérandes doit être effectuée. Les opérateurs avec une priorité plus élevée sont calculés en premier que les autres tandis que les opérateurs avec la même priorité sont manipulés sans séquence particulière.
Le tableau ci-dessous répertorie les opérateurs de priorité élevée à faible.
Numéro de série. | symbole | La description |
---|---|---|
un | ** | opération exponentielle |
deux | +, - | addition soustraction |
3 | *, / | multiplication, division |
4 | +, -, || | addition, soustraction, concaténation |
5 | opérateurs de comparaison | |
6 | NE PAS | négation |
8 | OU | inclusion |
Instructions de contrôle en PL / SQL
Les structures de contrôle en PL / SQL se composent des structures de programme comme le itération, séquence, et sélection . La forme de sélection vérifie une condition, puis, en fonction des résultats de true ou false, traite le bloc de code suivant dans l'ordre.
La forme d'itération exécute un bloc de code ou d'instructions à plusieurs reprises jusqu'à ce que la condition soit valide. Enfin, la forme de séquence traite les instructions une par une dans l'ordre où elles sont présentes.
Instruction de condition dans PL SQL
Dans les scénarios de prise de décision, les instructions de condition telles que IF-THEN, IF-THEN-ELSE, IF-THEN-ELSEIF et CASE sont utilisées.
# 1) SI-ALORS: C'est l'une des formes de base des instructions IF. Il contient un bloc de code avec les mots-clés ENDIF et THEN. Si le résultat d'une condition est vrai, le bloc de code suivant est exécuté sinon pas.
Structure de IF-THEN:
IF condition THEN Block of code END IF;
Nous pouvons également garder un court bloc IF –THEN sur une seule ligne comme celle-ci.
IF big > small THEN temp: = big; END IF;
Implémentation du code avec 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; /
La sortie du code ci-dessus doit être:
# 2) SI-PUIS-AUTRE: C'est la forme suivante de l'instruction IF qui a le mot clé ELSE puis le bloc de code suivant. Ce bloc d'instructions ELSE est facultatif et s'exécute lorsque la condition est FALSE.
Structure de IF-THEN-ELSE:
IF condition THEN Block of code 1 ELSE Block of code 2 END IF;
Implémentation du code avec 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; /
La sortie du code ci-dessus doit être:
# 3) SI-PUIS-ELSIF: Cette instruction conditionnelle donne la possibilité de choisir parmi les alternatives. ELSE… Le bloc de code ELSE peut éventuellement venir après l'instruction IF-THEN. Ainsi, il est utilisé tout en traitant de multiples choix mutuellement exclusifs.
Un bloc de code IF-THEN peut avoir aucun ou plusieurs ELSIF à condition qu'ils apparaissent avant l'instruction ELSE. Une fois que nous rencontrons une condition vraie dans un bloc ELSIF, les autres ELSE ou ELSIF seront ignorés.
Structure de 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;
Implémentation du code avec 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; /
La sortie du code ci-dessus est:
# 4) ÉNONCÉ DE CAS: Cette instruction conditionnelle sélectionnera un bloc de code parmi les choix. Cependant, comme les instructions IF, CASE n’utilise pas d’entrée booléenne, mais une expression qui permet de sélectionner l’une des options.
Le dernier choix de l'instruction CASE est celui par défaut. CASE STATEMENT est plus efficace et moins long que les instructions IF.
Structure de l'énoncé de cas:
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;
Implémentation du code avec 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; /
La sortie du code ci-dessus est:
# 5) Déclaration de cas recherché: Cette instruction conditionnelle est dépourvue de tout sélecteur et le bloc de code WHEN ne donne que des résultats booléens et aucune valeur d'autres types de données.
Structure de l'instruction SEARCHED CASE:
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;
Implémentation du code avec l'instruction SEARCHED 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; /
La sortie du code ci-dessus doit être:
# 6) IMBRIQUÉ SI-PUIS-AUTRE: Cette instruction conditionnelle donne la possibilité d'utiliser un bloc ELSE IF ou IF dans un autre IF ou ELSE IF.
Structure de 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;
Implémentation de code avec 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; /
La sortie du code ci-dessus doit être:
Instruction itérative dans PL SQL
Lors de l'implémentation de la logique en PL / SQL, nous pouvons avoir besoin de traiter plusieurs fois un bloc de code. Ceci est réalisé à l'aide d'instructions LOOP. Ce sont de trois types, FOR-LOOP, WHILE-LOOP et LOOP.
# 1) BOUCLES SQL PL
Une boucle a une structure de base comme ci-dessous:
LOOP Block of code END LOOP;
Après chaque itération, le déroulement du programme pointe vers le haut de la boucle jusqu'à ce qu'une certaine condition soit satisfaite. Dans le cas où nous voulons sortir de la boucle à cause d'une situation, dans ce cas, une instruction EXIT peut être utilisée.
# 2) PL SQL EN BOUCLE
Cette boucle exécutera un bloc de code plusieurs fois jusqu'à ce que la condition soit valide. Au début de chaque itération, la condition de la boucle est vérifiée. S'il est satisfait, le bloc de code est exécuté.
Si la condition est nulle ou non satisfaite, la boucle est évitée et le bloc de code suivant est exécuté.
Structure de WHILE LOOP:
WHILE condition LOOP Block of code END LOOP;
Implémentation de code avec 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; /
La sortie du code ci-dessus doit être:
# 3) PL SQL POUR BOUCLE
Ce type de boucle permet l'exécution d'un bloc de code à un certain nombre de fois. L'étape de début est exécutée une fois. Ceci est principalement utilisé pour l'initialisation et la déclaration des variables de boucle. Ensuite, les valeurs limites (plage de début et de fin) sont vérifiées. Si la condition est satisfaite, le bloc de code à l'intérieur du LOOP sera exécuté. Sinon, le déroulement du programme passe au bloc de code suivant après la boucle.
Après une itération, le compteur de boucles augmente ou diminue de un. L'ensemble du processus se poursuit jusqu'à ce que la condition de boucle soit satisfaite. Lorsque la condition devient FALSE, la boucle se termine.
En PL / SQL, la plage de début et de fin de la boucle peut être modifiée au moment de l'exécution. Le compteur de la boucle doit être un entier, un nombre, etc. (qui peut être augmenté ou diminué numériquement). La valeur de départ de la variable de compteur peut être n'importe quel nombre.
Structure de FOR LOOP:
FOR counter IN start_value .. end_value LOOP Block of code 1 END LOOP;
Implémentation du code de 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; /
La sortie du code ci-dessus doit être:
# 4) BOUCLE EMBRIQUÉE
Ce type d'instruction permet une boucle sur l'autre. Les structures de boucle externe et interne peuvent être de types identiques ou différents. Après chaque parcours, les deux boucles doivent s'exécuter correctement.
Structure de la boucle imbriquée:
LOOP (outer) Block of code 1 LOOP (inner) Block of code 2 END LOOP; END LOOP;
Implémentation de code avec 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; /
La sortie du code ci-dessus doit être:
Étiquettes de boucle en PL / SQL
En PL / SQL, nous avons la possibilité d'étiqueter les boucles, ce qui augmente la lisibilité et la signification du code. L'étiquette est représentée par des crochets doubles ( << et >> ) et sont mentionnés en haut de l'instruction LOOP. L'étiquette peut également être placée à la fin de la boucle.
L'étiquette peut également être décrite pour les instructions EXIT en sortant de la boucle.
Structure des LABELS:
<> LOOP Block of Code END LOOP;
Implémentation de code avec 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; /
Déclarations de contrôle de séquence
L'instruction de contrôle est utilisée pour modifier le flux d'exécution du programme.
# 1) QUITTER
Une instruction EXIT rompt une boucle explicitement. Lorsque EXIT est trouvé dans la boucle, la boucle se rompt et le déroulement du programme passe au bloc de code suivant. Dans les conditions où nous utilisons des boucles imbriquées, l'instruction EXIT terminera d'abord la boucle interne, puis exécutera le bloc de code qui apparaît immédiatement après.
Implémentation du code avec 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; /
La sortie du code ci-dessus doit être:
# 2) CONTINUER
Cette instruction de contrôle permet à la boucle de sortir et de passer à l'itération suivante.
Implémentation du code avec CONTINUE:
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; /
La sortie du code ci-dessus doit être:
# 3) GOTO
L'instruction GOTO déplace le contrôle vers un bloc de code étiqueté unique sans condition. Ce n'est pas une bonne technique de programmation d'utiliser des instructions GOTO car cela réduit la lisibilité et la traçabilité du code.
Structure de GOTO:
GOTO 60; .. .. <> Block of code 1;
Implémentation de codage avec l'instruction 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;
La sortie du code ci-dessus doit être:
Questions fréquemment posées
Q # 1) Quelle est l'instruction de contrôle en PL / SQL?
Répondre: Les instructions de contrôle en PL / SQL sont de trois types: instructions de boucle, instructions séquentielles et instructions de contrôle. L'instruction de boucle se compose de WHILE LOOP, FOR LOOP et de base LOOP.
Q # 2) Comment vérifiez-vous l'égalité en PL / SQL?
Répondre: En PL / SQL, nous avons l'opérateur d'égalité qui vérifie l'égalité.
Par exemple,
SELECT NAME FROM EMPLOYEE WHERE AGE = 50;
Q # 3) Comment arrêter une boucle infinie en PL / SQL?
Répondre: Nous pouvons arrêter une boucle infinie en PL / SQL à l'aide d'instructions EXIT. Nous devons garder les instructions EXIT dans la boucle et non en dehors de la boucle.
Q # 4) Quel est le but de la structure de contrôle conditionnel en PL / SQL?
Répondre: La structure de contrôle conditionnel donne la possibilité de contrôler le déroulement du programme en fonction de certains critères. Ainsi, le code du programme ne s'exécute pas en séquence. Un bloc de code est exécuté en fonction de la condition.
Q # 5) Quels sont les 6 opérateurs relationnels?
Répondre: Les opérateurs relationnels de PL / SQL sont =,,! =, ==.
Q # 6) Quels sont les différents types d'opérateurs?
Réponse: Les différents types d'opérateurs en PL / SQL sont répertoriés ci-dessous:
- Opérateurs au niveau du bit
- Opérateurs d'affectation
- Opérateurs arithmétiques
- Opérateurs relationnels
- Opérateurs logiques
Conclusion
Nous avons couvert une grande partie de PL / SQL dans ce tutoriel traitant de sujets tels que les opérateurs multiples et leur importance avec des exemples de code.
De plus, nous avons exploré en détail les instructions de contrôle PL SQL. Les instructions de contrôle se composent des structures du programme telles que l'itération, la condition et la séquence.
Dans le prochain didacticiel, nous aborderons les procédures PL SQL, les fonctions, les curseurs et bien d'autres sujets connexes.
lecture recommandée
- Tutoriel PL SQL pour les débutants avec des exemples | Qu'est-ce que PL / SQL
- Opérateurs Python
- Instructions conditionnelles Unix: If Then Else et opérateurs relationnels
- Instructions de contrôle Python (Python Continue, Break et Pass)
- Tutoriel sur les instructions conditionnelles C #
- Contrôle de la source ou contrôle de version dans DevOps (Tutoriel vidéo Partie 2 - Bloc 2)
- Boucles en C #: instructions de contrôle et diverses boucles avec des exemples
- Tutoriel Tortoise SVN: Révisions dans le référentiel de code