29.11.2014 Views

Capitolul II Structurarea bazelor de date

Capitolul II Structurarea bazelor de date

Capitolul II Structurarea bazelor de date

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

51<br />

b. WHILE - LOOP<br />

În PL/SQL pentru realizarea unei structuri repetitive condiŃionate anterior<br />

se utilizează instrucŃiunea WHILE - LOOP. Sintaxa unei astfel <strong>de</strong> structuri<br />

repetitive este următoarea:<br />

WHILE condiŃie LOOP<br />

END LOOP<br />

bloc <strong>de</strong> instrucŃiuni<br />

c. FOR - LOOP<br />

Ca şi în alte limbaje, parcurgerea unui şir <strong>de</strong> valori se realizează folosind<br />

o instrucŃiune FOR - LOOP. Exemplu <strong>de</strong> utilizare:<br />

-- Declaratii <strong>de</strong> variabile<br />

p NUMBER := 0;<br />

BEGIN<br />

FOR k IN 1..500 LOOP -- calcul pi ca suma a 500 termeni<br />

p := p + ( ( (-1) ** (k + 1) ) / ((2 * k) - 1) );<br />

END LOOP;<br />

p := 4 * p;<br />

DBMS_OUTPUT.PUT_LINE( 'pi este aproximativ : ' || p );<br />

END;<br />

/<br />

În exemplul dat variabila i va lua valori în intervalul <strong>de</strong> valori întregi<br />

introdus prin IN. Valorile sunt <strong>de</strong> regulă consecutive şi crescătoare. Dacă şirul<br />

valorilor introduse prin IN trebuie parcurs în ordine inversă se va folosi clauza<br />

REVERSE, ca în exemplul următor:<br />

BEGIN<br />

END;<br />

/<br />

FOR i IN REVERSE 1..5 LOOP<br />

END LOOP;<br />

DBMS_OUTPUT.PUT_LINE (TO_CHAR(i));<br />

Se interzice modificarea variabilei folosite la controlul ciclului în interiorul<br />

acestuia.<br />

Un exemplu tipic <strong>de</strong> utilizare a ciclului FOR în domeniul <strong>bazelor</strong> <strong>de</strong> <strong>date</strong><br />

este cel în care se actualizează într-un ciclu înregistrările dintr-un tabel.<br />

Exemple:

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!