Oracle PL/SQL-i sisestamine, värskendamine, kustutamine ja valimine [näide]

Selles õpetuses õpime kasutama SQL PL/SQL-is. SQL on tegelik komponent, mis hoolitseb andmebaasis olevate andmete toomise ja värskendamise eest, samas kui PL/SQL on komponent, mis neid andmeid töötleb. Lisaks käsitleme selles artiklis ka seda, kuidas SQL-i PL/SQL-plokis kombineerida.

DML-tehingud PL/SQL-is

DML tähistab Andmetega manipuleerimise keel. Neid avaldusi kasutatakse peamiselt manipuleerimistoimingute tegemiseks. See käsitleb alltoodud toiminguid.

  • Andmete sisestamine
  • Andmete värskendamine
  • Andmete kustutamine
  • Andmete valik

PL/SQL-is saame andmetega manipuleerida ainult SQL-käskude abil.

Andmete sisestamine

PL/SQL-is saame andmed sisestada mis tahes tabelisse, kasutades SQL-i käsku INSERT INTO. See käsk võtab sisendiks tabeli nime, tabeli veeru ja veeru väärtused ning lisab väärtuse põhitabelisse.

Käsk INSERT võib võtta väärtused ka otse teisest tabelist, kasutades käsku 'SELECT', selle asemel, et anda iga veeru väärtusi. SELECT-lause kaudu saame sisestada nii palju ridu, kui palju baastabel sisaldab.

süntaksit:

BEGIN
  INSERT INTO <table_name>(<column1 >,<column2>,...<column_n>)
     VALUES(<valuel><value2>,...:<value_n>);
END;
  • Ülaltoodud süntaks näitab käsku INSERT INTO. Tabeli nimi ja väärtused on kohustuslikud väljad, samas kui veergude nimed pole kohustuslikud, kui sisestuslausetel on väärtused kõigi tabeli veergude jaoks.
  • Märksõna VÄÄRTUSED on kohustuslik, kui väärtused on toodud eraldi, nagu ülal näidatud.

süntaksit:

BEGIN
  INSERT INTO <table_name>(<columnl>,<column2>,...,<column_n>)
     SELECT <columnl>,<column2>,.. <column_n> FROM <table_name2>;
END;
  • Ülaltoodud süntaks näitab käsku INSERT INTO, mis võtab väärtused otse failist kasutades käsku SELECT.
  • Märksõna VÄÄRTUSED ei tohiks sel juhul esineda, kuna väärtusi ei anta eraldi.

Andmete värskendamine

Andmete värskendamine tähendab lihtsalt tabeli mis tahes veeru väärtuse värskendamist. Seda saab teha käsu UPDATE abil. See avaldus võtab sisendiks tabeli nime, veeru nime ja väärtuse ning värskendab andmeid.

süntaksit:

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;
  • Ülaltoodud süntaks näitab UPDATE. Märksõna 'SET' juhendab seda PL/SQL-i mootorit värskendama veeru väärtust antud väärtusega.
  • Klausel „KUS” on valikuline. Kui seda klauslit ei anta, uuendatakse nimetatud veeru väärtust kogu tabelis.

Andmete kustutamine

Andmete kustutamine tähendab ühe täieliku kirje kustutamist andmebaasi tabelist. Selleks kasutatakse käsku DELETE.

süntaksit:

BEGIN
  DELETE
  FROM
  <table_name>
  WHERE <condition that uniquely identifies the record that needs to be update>; 
END;
  • Ülaltoodud süntaks näitab käsku DELETE. Märksõna "FROM" on valikuline ja koos või ilma "FROM"-klauslita käitub käsk samamoodi.
  • Klausel „KUS” on valikuline. Kui seda klauslit ei anta, kustutatakse kogu tabel.

Andmete valik

Andmete projitseerimine/toomine tähendab vajalike andmete hankimist andmebaasi tabelist. Seda saab saavutada, kasutades käsku "SELECT" koos klausliga "INTO". Käsk 'SELECT' toob väärtused andmebaasist ja klausel 'INTO' määrab need väärtused kohalikule muutujale PL/SQL plokk.

Allpool on punktid, mida tuleb 'SELECT' avalduses arvesse võtta.

  • Avaldus 'SELECT' peaks tagastama ainult ühe kirje, samas kui kasutada klauslit INTO, kuna üks muutuja võib sisaldada ainult ühte väärtust. Kui lause „SELECT” tagastab rohkem kui ühe väärtuse, tõstetakse esile erand „TOO_MANY_ROWS”.
  • Käsk „SELECT” määrab väärtuse „INTO”-klauslis olevale muutujale, seega peab see väärtuse sisestamiseks hankima tabelist vähemalt ühe kirje. Kui see ei saanud ühtegi kirjet, tõstetakse erand „NO_DATA_FOUND”.
  • Veergude arv ja nende andmetüüp klauslis „SELECT” peaksid ühtima muutujate arvu ja nende andmetüüpidega klauslis „INTO”.
  • Väärtused tuuakse ja täidetakse avalduses mainitud järjekorras.
  • Klausel „KUS” on valikuline, mis võimaldab hankida täiendavaid piiranguid kirjetele.
  • SELECT-lauset saab kasutada teiste DML-lausete tingimuses WHERE tingimuste väärtuste määratlemiseks.
  • Lause SELECT, kui kasutate lauseid INSERT, UPDATE ja DELETE, ei tohiks sisaldada klauslit INTO, kuna see ei täida sellistel juhtudel ühtegi muutujat.

süntaksit:

BEGIN
  SELECT <columnl>,..<column_n> INTO <vanable 1 >,. .<variable_n> 
   FROM <table_name>
   WHERE <condition to fetch the required records>;
END;
  • Ülaltoodud süntaks näitab käsku SELECT-INTO. Märksõna 'FROM' on kohustuslik, mis identifitseerib tabeli nime, millest andmed tuleb tuua.
  • Klausel „KUS” on valikuline. Kui seda klauslit ei anta, tuuakse andmed kogu tabelist.

Näiteks 1: Selles näites näeme, kuidas DML-i toiminguid teha PL / SQL. Sisestame emp-tabelisse järgmised neli kirjet.

EMP_NAME EMP_NO SALARY MANAGER
BBB 1000 25000 AAA
XXX 1001 10000 BBB
YYY 1002 10000 BBB
Zzz 1003 7500 BBB

Seejärel värskendame XXX palka 15000 XNUMX peale ja kustutame töötaja kirje 'ZZZ'. Lõpuks projitseerime töötaja XXX üksikasjad.

Andmete valik PL/SQL-is

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

Väljund:

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

Koodi selgitus:

  • Koodirida 2-5: muutuja deklareerimine.
  • Koodirida 7-14: kirjete sisestamine emp-tabelisse.
  • Koodirida 15: sisestamise tehingute sooritamine.
  • Koodirida 17-19: Töötaja 'XXX' palga uuendamine 15000-le
  • Koodirida 20: värskendustehingu sooritamine.
  • Koodirida 22: 'ZZZ' kirje kustutamine
  • Koodirida 23: kustutamistehingu sooritamine.
  • Koodirida 25-27: XXX kirje valimine ja muutujate l_emp_name, l_emp_no, l_salary, l_manager sisestamine.
  • Koodirida 28-32: toodud kirjete väärtuse kuvamine.