Oracle PL/SQL Inserați, actualizați, ștergeți și selectați în [Exemplu]

În acest tutorial, vom învăța cum să folosim SQL în PL/SQL. SQL este componenta reală care se ocupă de preluarea și actualizarea datelor din baza de date, în timp ce PL/SQL este componenta care procesează aceste date. Mai mult, în acest articol, vom discuta și despre cum să combinați SQL-ul în blocul PL/SQL.

Tranzacții DML în PL/SQL

DML înseamnă Limbajul de manipulare a datelor. Aceste afirmații sunt utilizate în principal pentru a efectua activitatea de manipulare. Se ocupă de operațiunile de mai jos.

  • Inserarea datelor
  • Actualizare de date
  • Ștergerea datelor
  • Selectarea datelor

În PL/SQL, putem face manipularea datelor numai folosind comenzile SQL.

Inserarea datelor

În PL/SQL, putem insera datele în orice tabel folosind comanda SQL INSERT INTO. Această comandă va lua numele tabelului, coloana tabelului și valorile coloanei ca intrare și va introduce valoarea în tabelul de bază.

Comanda INSERT poate prelua valorile direct dintr-un alt tabel folosind instrucțiunea „SELECT” în loc să ofere valorile pentru fiecare coloană. Prin instrucțiunea „SELECT”, putem insera atâtea rânduri câte conține tabelul de bază.

Sintaxă:

BEGIN
  INSERT INTO <table_name>(<column1 >,<column2>,...<column_n>)
     VALUES(<valuel><value2>,...:<value_n>);
END;
  • Sintaxa de mai sus arată comanda INSERT INTO. Numele tabelului și valorile sunt câmpuri obligatorii, în timp ce numele coloanelor nu sunt obligatorii dacă instrucțiunile de inserare au valori pentru toată coloana tabelului.
  • Cuvântul cheie „VALORI” este obligatoriu dacă valorile sunt date separat, așa cum se arată mai sus.

Sintaxă:

BEGIN
  INSERT INTO <table_name>(<columnl>,<column2>,...,<column_n>)
     SELECT <columnl>,<column2>,.. <column_n> FROM <table_name2>;
END;
  • Sintaxa de mai sus arată comanda INSERT INTO care preia valorile direct din folosind comanda SELECT.
  • Cuvântul cheie „VALUES” nu ar trebui să fie prezent în acest caz, deoarece valorile nu sunt date separat.

Actualizare de date

Actualizarea datelor înseamnă pur și simplu o actualizare a valorii oricărei coloane din tabel. Acest lucru se poate face folosind instrucțiunea „UPDATE”. Această instrucțiune ia numele tabelului, numele coloanei și valoarea ca intrare și actualizează datele.

Sintaxă:

BEGIN	
  UPDATE <table_name>
  SET <columnl>=<VALUE1>,<column2>=<value2>,<column_n>=<value_n> 
  WHERE <condition that uniquely identifies the record that needs to be update>; 
END;
  • Sintaxa de mai sus arată UPDATE. Cuvântul cheie „SET” instruiește acel motor PL/SQL să actualizeze valoarea coloanei cu valoarea dată.
  • Clauza „UNDE” este opțională. Dacă această clauză nu este dată, atunci valoarea coloanei menționate din întreg tabelul va fi actualizată.

Ștergerea datelor

Ștergerea datelor înseamnă ștergerea unei înregistrări complete din tabelul bazei de date. Comanda „ȘTERGERE” este utilizată în acest scop.

Sintaxă:

BEGIN
  DELETE
  FROM
  <table_name>
  WHERE <condition that uniquely identifies the record that needs to be update>; 
END;
  • Sintaxa de mai sus arată comanda DELETE. Cuvântul cheie „FROM” este opțional și cu sau fără clauza „FROM” comanda se comportă în același mod.
  • Clauza „UNDE” este opțională. Dacă această clauză nu este dată, atunci întregul tabel va fi șters.

Selectarea datelor

Proiecția/preluarea datelor înseamnă a prelua datele necesare din tabelul bazei de date. Acest lucru poate fi realizat folosind comanda „SELECT” cu clauza „INTO”. Comanda „SELECT” va prelua valorile din baza de date, iar clauza „INTO” va atribui aceste valori variabilei locale a bloc PL/SQL.

Mai jos sunt punctele care trebuie luate în considerare în declarația „SELECT”.

  • Instrucțiunea „SELECT” ar trebui să returneze o singură înregistrare în timp ce se utilizează clauza „INTO”, deoarece o variabilă poate deține o singură valoare. Dacă instrucțiunea „SELECT” returnează mai mult de o valoare, va fi ridicată excepția „TOO_MANY_ROWS”.
  • Instrucțiunea „SELECT” va atribui valoarea variabilei din clauza „INTO”, deci trebuie să obțină cel puțin o înregistrare din tabel pentru a popula valoarea. Dacă nu a primit nicio înregistrare, atunci este ridicată excepția „NO_DATA_FOUND”.
  • Numărul de coloane și tipul lor de date din clauza „SELECT” trebuie să se potrivească cu numărul de variabile și tipurile lor de date din clauza „INTO”.
  • Valorile sunt preluate și populate în aceeași ordine ca cea menționată în declarație.
  • Clauza „UNDE” este opțională, ceea ce permite să existe mai multe restricții asupra înregistrărilor care vor fi preluate.
  • Instrucțiunea „SELECT” poate fi utilizată în condiția „WHERE” a altor instrucțiuni DML pentru a defini valorile condițiilor.
  • Instrucțiunea „SELECT” atunci când se utilizează instrucțiunile „INSERT”, „UPDATE”, „DELETE” nu ar trebui să aibă clauza „INTO”, deoarece nu va popula nicio variabilă în aceste cazuri.

Sintaxă:

BEGIN
  SELECT <columnl>,..<column_n> INTO <vanable 1 >,. .<variable_n> 
   FROM <table_name>
   WHERE <condition to fetch the required records>;
END;
  • Sintaxa de mai sus arată comanda SELECT-INTO. Cuvântul cheie „FROM” este obligatoriu care identifică numele tabelului de la care trebuie preluate datele.
  • Clauza „UNDE” este opțională. Dacă această clauză nu este dată, atunci datele din întregul tabel vor fi preluate.

Exemplu 1: În acest exemplu, vom vedea cum să efectuați operațiuni DML în PL / SQL. Vom insera cele patru înregistrări de mai jos în tabelul emp.

EMP_NAME EMP_NR SALARIU MANAGER
BBB 1000 25000 AAA
XXX 1001 10000 BBB
AAAA 1002 10000 BBB
ZZZ 1003 7500 BBB

Apoi vom actualiza salariul „XXX” la 15000 și vom șterge înregistrarea angajatului „ZZZ”. În cele din urmă, vom proiecta detaliile angajatului „XXX”.

Selectarea datelor în PL/SQL

DECLARE
l_emp_name VARCHAR2(250);
l_emp_no NUMBER;
l_salary NUMBER; 
l_manager VARCHAR2(250);
BEGIN	
INSERT INTO emp(emp_name,emp_no,salary,manager) 
VALUES(‘BBB’,1000,25000,’AAA’);
INSERT INTO emp(emp_name,emp_no,salary,manager)
VALUES('XXX',1001,10000,’BBB);
INSERT INTO emp(emp_name,emp_no,salary,managed 
VALUES(‘YYY',1002,10000,'BBB');
INSERT INTO emp(emp_name,emp_no,salary,manager) 
VALUES(‘ZZZ',1003,7500,'BBB'):‭
COMMIT;
Dbms_output.put_line(‘Values Inserted');
UPDATE EMP
SET salary=15000
WHERE emp_name='XXX';
COMMIT;
Dbms_output.put_line(‘Values Updated');
DELETE emp WHERE emp_name='ZZZ';
COMMIT:
Dbms_output.put_line('Values Deleted );
SELECT emp_name,emp_no,salary,manager INTO l_emp_name,l_emp_no,l_salary,l_manager FROM emp WHERE emp_name='XXX';

Dbms output.put line(‘Employee Detail’);
Dbms_output.put_line(‘Employee Name:‘||l_emp_name);
Dbms_output.put_line(‘Employee Number:‘||l_emp_no);
Dbms_output.put_line(‘Employee Salary:‘||l_salary);
Dbms output.put line(‘Emplovee Manager Name:‘||l_manager):
END;
/

ieșire:

Values Inserted
Values Updated
Values Deleted
Employee Detail 
Employee Name:XXX 
Employee Number:1001 
Employee Salary:15000 
Employee Manager Name:BBB

Explicația codului:

  • Linia de cod 2-5: Declararea variabilei.
  • Linia de cod 7-14: Inserarea înregistrărilor în tabelul emp.
  • Linia de cod 15: Efectuarea tranzacțiilor de inserare.
  • Linia de cod 17-19: Actualizarea salariului angajatului „XXX” la 15000
  • Linia de cod 20: Se efectuează tranzacția de actualizare.
  • Linia de cod 22: Ștergerea înregistrării lui „ZZZ”
  • Linia de cod 23: Se efectuează tranzacția de ștergere.
  • Linia de cod 25-27: Se selectează înregistrarea „XXX” și se completează în variabila l_emp_name, l_emp_no, l_salary, l_manager.
  • Linia de cod 28-32: Afișarea valorii înregistrărilor preluate.