pl sql operators control statements tutorial
Scopri i diversi operatori PL SQL e le istruzioni di controllo come if-then-else, for loop, while loop, ecc. Con esempi di codice di esempio:
Nel Comandi PL / SQL tutorial di Serie PL / SQL , abbiamo imparato a conoscere i comandi PL SQL INSERT, UPDATE, DELETE e SELECT con esempi di programmazione.
In questo articolo, discuteremo i diversi operatori supportati da PL / SQL come gli operatori relazionali, logici, aritmetici e di confronto. Analizzeremo anche le istruzioni di controllo ampiamente utilizzate in PL / SQL.
La condizione PL / SQL e le strutture iterative sono state spiegate in dettaglio con esempi qui in questo tutorial.
migliore app per scaricare canzoni mp3
Cosa imparerai:
Operatori PL SQL
Un operatore PL SQL indica al compilatore di eseguire operazioni aritmetiche e logiche con l'aiuto di un simbolo.
Per impostazione predefinita, PL / SQL ha i seguenti tipi di operatore:
- Aritmetica
- Confronto
- Logico
- Corda
- Relazionale
# 1) Operatori aritmetici
Simbolo | Descrizione | |
---|---|---|
7 | E | congiunzione |
+ | Esegue l'aggiunta di due operandi. | |
* | Esegue la moltiplicazione di due operandi. | |
/ | Esegue la divisione di due operandi. | |
- | Esegue la sottrazione di due operandi. | |
** | Esegue un'operazione esponenziale. |
Implementazione del codice con operatori aritmetici:
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; /
L'output del codice precedente dovrebbe essere:
# 2) Operatori relazionali
Questi operatori eseguono il confronto e restituiscono i valori in booleano.
Numero di serie. | Simbolo | Descrizione |
---|---|---|
uno | > | Verifica se il valore dell'operando sinistro è maggiore di quello destro. |
Due | < | Verifica se il valore dell'operando destro è maggiore di quello sinistro. |
3 | > = | Verifica se il valore dell'operando di sinistra è maggiore di uguale a quello di destra. |
4 | <= | Verifica se il valore dell'operando di destra è maggiore di uguale a quello di sinistra. |
5 | = | Verifica se due operandi sono uguali. |
6 | ! =, ~ =, | Verifica se due operandi non sono uguali. |
Implementazione del codice con operatori relazionali:
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; /
L'output del codice precedente dovrebbe essere:
# 3) Operatori di confronto
Questo operatore fornisce l'output come valore vero, falso o nullo in base al risultato del confronto di un'istruzione con l'altra.
Simbolo | Descrizione |
---|---|
FRA | Verifica se un valore si trova in un intervallo. |
NEL | Verifica se un valore è uguale a un set di membri. |
PIACE | Verifica se una stringa o un carattere è simile a un modello. |
È ZERO | Verifica se un operando è uguale al valore Null. |
Implementazione del codice con operatore di confronto:
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; /
L'output del codice precedente dovrebbe essere:
# 4) Operatori logici
PL / SQL supporta più di un operatore logico. Agiscono su operandi di natura booleana e producono anche risultati booleani.
Numero di serie. | Simbolo | Descrizione |
---|---|---|
uno | NON | Noto come NOT logico. Se il risultato è vero, NON lo rende falso. |
Due | E | Noto come AND logico. Se tutti gli operandi sono veri, il risultato è vero. |
3 | O | Noto come OR logico. Se qualcuno degli operandi è vero, il risultato è vero. |
Implementazione del codice con operatori logici:
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; /
L'output del codice precedente dovrebbe essere:
Precedenza operatore
La precedenza dell'operatore PL SQL viene impostata per definire come deve essere eseguita un'operazione che coinvolge uno o più operatori o più di un operando. Gli operatori con precedenza più alta vengono calcolati per primi degli altri mentre gli operatori con la stessa precedenza vengono manipolati in nessuna sequenza particolare.
La tabella seguente elenca gli operatori dalla precedenza alta a quella bassa.
Numero di serie. | Simbolo | Descrizione |
---|---|---|
uno | ** | operazione esponenziale |
Due | +, - | addizione, sottrazione |
3 | *, / | moltiplicazione, divisione |
4 | +, -, || | addizione, sottrazione, concatenazione |
5 | operatori di confronto | |
6 | NON | negazione |
8 | O | inclusione |
Dichiarazioni di controllo in PL / SQL
Le strutture di controllo in PL / SQL sono costituite da strutture di programma come iterazione, sequenza, e selezione . La forma di selezione verifica una condizione, quindi in base ai risultati di vero o falso, elabora il blocco di codice successivo in ordine.
La forma di iterazione esegue ripetutamente un blocco di codice o istruzioni finché la condizione non è valida. Infine, la forma di sequenza elabora le istruzioni una per una nell'ordine in cui sono presenti.
Dichiarazione di condizione in PL SQL
Negli scenari decisionali, vengono utilizzate le istruzioni condizionali IF-THEN, IF-THEN-ELSE, IF-THEN-ELSEIF e CASE.
# 1) SE-ALLORA: Questa è una delle forme di base delle dichiarazioni IF. Contiene un blocco di codice con le parole chiave ENDIF e THEN. Se il risultato di una condizione è vero, il blocco di codice successivo viene eseguito altrimenti no.
Struttura di IF-THEN:
IF condition THEN Block of code END IF;
Possiamo anche mantenere un breve blocco IF –THEN su una singola riga come questa.
IF big > small THEN temp: = big; END IF;
Implementazione del codice con 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; /
L'output del codice precedente dovrebbe essere:
# 2) IN CASO DI ALTRO: Questa è la forma successiva dell'istruzione IF che ha la parola chiave ELSE e quindi il blocco di codice successivo. Questo blocco di istruzioni ELSE è facoltativo e viene eseguito quando la condizione è FALSE.
Struttura di IF-THEN-ELSE:
IF condition THEN Block of code 1 ELSE Block of code 2 END IF;
Implementazione del codice con 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; /
L'output del codice precedente dovrebbe essere:
# 3) SE-ALLORA-ELSIF: Questa affermazione condizionale offre la possibilità di scegliere tra le alternative. ELSE… ELSE il blocco di codice può opzionalmente venire dopo l'istruzione IF-THEN. Quindi viene utilizzato quando si tratta di scelte multiple che si escludono a vicenda.
Un blocco di codice IF-THEN può avere nessuno o più ELSIF a condizione che compaiano prima dell'istruzione ELSE. Una volta che incontriamo una condizione vera in un blocco ELSIF, altri ELSE o ELSIF verranno ignorati.
Struttura di 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;
Implementazione del codice con 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; /
L'output del codice precedente è:
# 4) DICHIARAZIONE DEL CASO: Questa istruzione condizionale selezionerà un blocco di codice dalle scelte. Tuttavia, come le istruzioni IF, CASE non utilizza l'input booleano, ma un'espressione che aiuta a selezionare una delle opzioni.
L'ultima scelta dell'istruzione CASE è quella predefinita. CASE STATEMENT è più efficiente e meno lungo rispetto alle istruzioni IF.
Struttura della DICHIARAZIONE DEL CASO:
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;
Implementazione del codice con 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; /
L'output del codice precedente è:
# 5) Istruzione CASO RICERCATO: Questa istruzione condizionale è priva di qualsiasi selettore e il blocco di codice WHEN fornisce solo risultati booleani e non alcun valore di altri tipi di dati.
Struttura dell'istruzione 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;
Implementazione del codice con istruzione 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; /
L'output del codice precedente dovrebbe essere:
# 6) NASCOSTO SE-ALLORA: Questa istruzione condizionale fornisce la possibilità di utilizzare il blocco ELSE IF o IF all'interno di un altro IF o ELSE IF.
Struttura di 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;
Implementazione del codice con 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; /
L'output del codice precedente dovrebbe essere:
Istruzione iterativa in PL SQL
Durante l'implementazione della logica in PL / SQL, potremmo richiedere di elaborare un blocco di codice ripetutamente più volte. Ciò si ottiene con l'aiuto delle istruzioni LOOP. Questi sono di tre tipi, FOR-LOOP, WHILE-LOOP e LOOP.
# 1) PL SQL LOOP
Un LOOP ha una struttura di base come di seguito:
LOOP Block of code END LOOP;
Dopo ogni iterazione, il flusso del programma torna all'inizio del ciclo finché non viene soddisfatta una determinata condizione. Nel caso in cui si voglia uscire dal ciclo a causa di una situazione, in tal caso, è possibile utilizzare un'istruzione EXIT.
# 2) PL SQL DURANTE LOOP
Questo ciclo eseguirà un blocco di codice più volte finché la condizione non sarà valida. All'inizio di ogni iterazione, viene verificata la condizione del ciclo. Se è soddisfatto, viene eseguito il blocco di codice.
Se la condizione è nulla o non è soddisfatta, il ciclo viene evitato e viene eseguito il blocco di codice successivo.
Struttura di WHILE LOOP:
WHILE condition LOOP Block of code END LOOP;
Implementazione del codice con 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; /
L'output del codice precedente dovrebbe essere:
# 3) PL SQL PER LOOP
Questo tipo di ciclo consente l'esecuzione di un blocco di codice per un determinato numero di volte. Il passaggio iniziale viene eseguito una volta. Viene utilizzato principalmente per l'inizializzazione e la dichiarazione delle variabili del ciclo. Quindi vengono controllati i valori limite (intervallo iniziale e finale). Se la condizione è soddisfatta, il blocco di codice all'interno del LOOP verrà eseguito. In caso contrario, il flusso del programma si sposta nel blocco di codice successivo dopo il ciclo.
Dopo un'iterazione, il contatore del ciclo aumenta o diminuisce di uno. L'intero processo continua finché la condizione del ciclo non è soddisfatta. Quando la condizione diventa FALSE, il ciclo termina.
In PL / SQL, l'intervallo iniziale e finale del ciclo può essere modificato in fase di esecuzione. Il contatore del ciclo dovrebbe essere un intero, un numero e così via (che può essere aumentato o diminuito numericamente). Il valore iniziale della variabile counter può essere qualsiasi numero.
Struttura di FOR LOOP:
FOR counter IN start_value .. end_value LOOP Block of code 1 END LOOP;
Implementazione del codice di 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; /
L'output del codice precedente dovrebbe essere:
# 4) NESTED LOOP
Questo tipo di istruzione consente un ciclo sull'altro. La struttura del loop esterno e interno può essere dello stesso tipo o di tipi diversi. Dopo ogni attraversamento, entrambi i loop devono essere eseguiti correttamente.
Struttura del ciclo annidato:
LOOP (outer) Block of code 1 LOOP (inner) Block of code 2 END LOOP; END LOOP;
Implementazione del codice con 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; /
L'output del codice precedente dovrebbe essere:
Etichette di loop in PL / SQL
In PL / SQL, abbiamo la possibilità di etichettare i loop che aumenta la leggibilità e il significato del codice. L'etichetta è rappresentata da doppie parentesi angolari ( << e >> ) e sono menzionati all'inizio dell'istruzione LOOP. L'etichetta può essere posizionata anche alla fine del LOOP.
L'etichetta può anche essere descritta per le istruzioni EXIT mentre esce dal ciclo.
Struttura delle ETICHETTE:
<> LOOP Block of Code END LOOP;
Implementazione del codice con 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; /
Dichiarazioni di controllo della sequenza
L'istruzione di controllo viene utilizzata per modificare il flusso di esecuzione del programma.
# 1) ESCI
Un'istruzione EXIT interrompe un ciclo in modo esplicito. Quando EXIT si trova nel ciclo, il ciclo si interrompe e il flusso del programma si sposta al blocco di codice successivo. In condizioni in cui stiamo utilizzando cicli annidati, l'istruzione EXIT terminerà prima il ciclo interno e quindi eseguirà il blocco di codice che appare immediatamente dopo di esso.
Implementazione del codice con 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; /
L'output del codice precedente dovrebbe essere:
# 2) CONTINUA
Questa istruzione di controllo consente al ciclo di uscire e passare all'iterazione successiva.
Implementazione del codice con CONTINUA:
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; /
L'output del codice precedente dovrebbe essere:
# 3) GOTO
L'istruzione GOTO sposta incondizionatamente il controllo in un blocco di codice etichettato univoco. Non è una buona tecnica di programmazione utilizzare le istruzioni GOTO perché riduce la leggibilità e la tracciabilità del codice.
Struttura di GOTO:
GOTO 60; .. .. <> Block of code 1;
Implementazione della codifica con l'istruzione 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;
L'output del codice precedente dovrebbe essere:
Domande frequenti
D # 1) Qual è l'istruzione di controllo in PL / SQL?
Risposta: Le istruzioni di controllo in PL / SQL sono di tre tipi: istruzioni di ciclo, istruzioni sequenziali e istruzioni di controllo. L'istruzione loop è composta da WHILE LOOP, FOR LOOP e LOOP di base.
Q # 2) Come verifichi l'uguaglianza in PL / SQL?
Risposta: In PL / SQL, abbiamo l'operatore di uguaglianza che controlla l'uguaglianza.
Per esempio,
SELECT NAME FROM EMPLOYEE WHERE AGE = 50;
D # 3) Come si ferma un ciclo infinito in PL / SQL?
Risposta: Possiamo fermare un ciclo infinito in PL / SQL con l'aiuto delle istruzioni EXIT. Dobbiamo mantenere le istruzioni EXIT all'interno del ciclo e non al di fuori del ciclo.
D # 4) Qual è lo scopo della struttura di controllo condizionale in PL / SQL?
Risposta: La struttura di controllo condizionale offre la possibilità di controllare il flusso del programma in base ad alcuni criteri. Pertanto il codice nel programma non viene eseguito in sequenza. Un blocco di codice viene eseguito in base alla condizione.
Q # 5) Quali sono i 6 operatori relazionali?
Risposta: Gli operatori relazionali di PL / SQL sono =,,! =, ==.
Q # 6) Quali sono i diversi tipi di operatori?
Risposta: Di seguito sono elencati i diversi tipi di operatori in PL / SQL:
- Operatori bit per bit
- Operatori di assegnazione
- Operatori aritmetici
- Operatori relazionali
- Operatori logici
Conclusione
Abbiamo coperto gran parte di PL / SQL in questo tutorial trattando argomenti come gli operatori multipli e la loro importanza con esempi di codice.
Inoltre, abbiamo esplorato in dettaglio le istruzioni di controllo PL SQL. Le istruzioni di controllo sono costituite dalle strutture del programma come l'iterazione, la condizione e la sequenza.
Nel prossimo tutorial, discuteremo le procedure, le funzioni, i cursori di PL SQL e molti altri argomenti correlati.
Lettura consigliata
- Tutorial PL SQL per principianti con esempi | Cos'è PL / SQL
- Operatori Python
- Dichiarazioni condizionali Unix: If Then Else e operatori relazionali
- Dichiarazioni di controllo Python (Python Continue, Break and Pass)
- Esercitazione sulle istruzioni condizionali C #
- Controllo del codice sorgente o controllo della versione in DevOps (Tutorial video Parte 2 - Blocco 2)
- Cicli in C #: istruzioni di controllo e vari cicli con esempi
- Tutorial SVN tartaruga: revisioni nel repository di codice