Oracle PL/SQL umetanje, ažuriranje, brisanje i odabir u [primjer]

U ovom vodiču ćemo naučiti kako koristiti SQL u PL/SQL. SQL je stvarna komponenta koja se brine za dohvaćanje i ažuriranje podataka u bazi podataka, dok je PL/SQL komponenta koja obrađuje te podatke. Nadalje, u ovom ćemo članku također raspravljati o tome kako kombinirati SQL unutar PL/SQL bloka.

DML transakcije u PL/SQL

DML je kratica za Jezik za manipulaciju podacima. Ove se izjave uglavnom koriste za obavljanje aktivnosti manipulacije. Bavi se dolje navedenim operacijama.

  • Umetanje podataka
  • Ažuriranje podataka
  • Brisanje podataka
  • Odabir podataka

U PL/SQL-u možemo manipulirati podacima samo pomoću SQL naredbi.

Umetanje podataka

U PL/SQL možemo umetnuti podatke u bilo koju tablicu pomoću SQL naredbe INSERT INTO. Ova naredba će uzeti naziv tablice, stupac tablice i vrijednosti stupaca kao ulaz i umetnuti vrijednost u osnovnu tablicu.

Naredba INSERT također može preuzeti vrijednosti izravno iz druge tablice pomoću izjave 'SELECT' umjesto davanja vrijednosti za svaki stupac. Preko naredbe 'SELECT' možemo umetnuti onoliko redaka koliko sadrži osnovna tablica.

Sintaksa:

BEGIN
  INSERT INTO <table_name>(<column1 >,<column2>,...<column_n>)
     VALUES(<valuel><value2>,...:<value_n>);
END;
  • Gornja sintaksa prikazuje naredbu INSERT INTO. Naziv tablice i vrijednosti obavezna su polja, dok nazivi stupaca nisu obavezni ako naredbe za umetanje imaju vrijednosti za sve stupce tablice.
  • Ključna riječ 'VRIJEDNOSTI' obavezna je ako su vrijednosti dane zasebno kao što je gore prikazano.

Sintaksa:

BEGIN
  INSERT INTO <table_name>(<columnl>,<column2>,...,<column_n>)
     SELECT <columnl>,<column2>,.. <column_n> FROM <table_name2>;
END;
  • Gornja sintaksa prikazuje naredbu INSERT INTO koja preuzima vrijednosti izravno iz pomoću naredbe SELECT.
  • Ključna riječ 'VRIJEDNOSTI' ne bi trebala biti prisutna u ovom slučaju jer se vrijednosti ne daju zasebno.

Ažuriranje podataka

Ažuriranje podataka jednostavno znači ažuriranje vrijednosti bilo kojeg stupca u tablici. To se može učiniti pomoću izjave 'UPDATE'. Ova izjava uzima naziv tablice, naziv stupca i vrijednost kao ulaz i ažurira podatke.

Sintaksa:

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;
  • Gornja sintaksa prikazuje AŽURIRANJE. Ključna riječ 'SET' upućuje taj PL/SQL stroj da ažurira vrijednost stupca danom vrijednošću.
  • Klauzula 'WHERE' nije obavezna. Ako ova klauzula nije dana, ažurirat će se vrijednost navedenog stupca u cijeloj tablici.

Brisanje podataka

Brisanje podataka znači brisanje jednog cijelog zapisa iz tablice baze podataka. U tu svrhu koristi se naredba 'DELETE'.

Sintaksa:

BEGIN
  DELETE
  FROM
  <table_name>
  WHERE <condition that uniquely identifies the record that needs to be update>; 
END;
  • Gornja sintaksa prikazuje naredbu DELETE. Ključna riječ 'FROM' nije obavezna i sa ili bez klauzule 'FROM' naredba se ponaša na isti način.
  • Klauzula 'WHERE' nije obavezna. Ako ova klauzula nije navedena, cijela tablica će biti izbrisana.

Odabir podataka

Projekcija/dohvaćanje podataka znači dohvaćanje potrebnih podataka iz tablice baze podataka. To se može postići korištenjem naredbe 'SELECT' s klauzulom 'INTO'. Naredba 'SELECT' dohvatit će vrijednosti iz baze podataka, a klauzula 'INTO' dodijelit će te vrijednosti lokalnoj varijabli PL/SQL blok.

Ispod su točke koje treba uzeti u obzir u izjavi 'SELECT'.

  • Naredba 'SELECT' trebala bi vratiti samo jedan zapis dok se koristi klauzula 'INTO' jer jedna varijabla može sadržavati samo jednu vrijednost. Ako naredba 'SELECT' vrati više od jedne vrijednosti, pokrenut će se iznimka 'TOO_MANY_ROWS'.
  • Naredba 'SELECT' dodijelit će vrijednost varijabli u klauzuli 'INTO', tako da treba dobiti barem jedan zapis iz tablice za popunjavanje vrijednosti. Ako nije dobio nikakav zapis, pokreće se iznimka 'NO_DATA_FOUND'.
  • Broj stupaca i njihov tip podataka u klauzuli 'SELECT' trebao bi odgovarati broju varijabli i njihovim tipovima podataka u klauzuli 'INTO'.
  • Vrijednosti se dohvaćaju i popunjavaju istim redoslijedom kako je navedeno u izjavi.
  • Klauzula 'WHERE' nije obvezna i omogućuje veća ograničenja zapisa koji će se dohvaćati.
  • Izjava 'SELECT' može se koristiti u uvjetu 'WHERE' drugih DML izjava za definiranje vrijednosti uvjeta.
  • Naredba 'SELECT' kada se koriste naredbe 'INSERT', 'UPDATE', 'DELETE' ne bi trebala imati klauzulu 'INTO' jer u tim slučajevima neće popuniti nijednu varijablu.

Sintaksa:

BEGIN
  SELECT <columnl>,..<column_n> INTO <vanable 1 >,. .<variable_n> 
   FROM <table_name>
   WHERE <condition to fetch the required records>;
END;
  • Gornja sintaksa prikazuje naredbu SELECT-INTO. Obavezna je ključna riječ 'FROM' koja identificira naziv tablice iz koje se podaci trebaju dohvatiti.
  • Klauzula 'WHERE' nije obavezna. Ako ova klauzula nije navedena, tada će se dohvatiti podaci iz cijele tablice.

Primjer 1: U ovom primjeru ćemo vidjeti kako izvoditi DML operacije u PL / SQL. Umetnut ćemo donja četiri zapisa u emp tablicu.

EMP_NAME EMP_NO PLAĆA MANAGER
BBB 1000 25000 AAA
XXX 1001 10000 BBB
GGG 1002 10000 BBB
ZZZ 1003 7500 BBB

Zatim ćemo ažurirati plaću 'XXX' na 15000 i izbrisati evidenciju zaposlenika 'ZZZ'. Konačno, projicirati ćemo detalje zaposlenika 'XXX'.

Odabir podataka u 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;
/

Izlaz:

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

Objašnjenje koda:

  • Redak koda 2-5: Deklaracija varijable.
  • Redak koda 7-14: Umetanje zapisa u emp tablicu.
  • Kodna linija 15: Izvršavanje transakcija umetanja.
  • Redak koda 17-19: Ažuriranje plaće zaposlenika 'XXX' na 15000
  • Kodna linija 20: Izvršavanje transakcije ažuriranja.
  • Kodna linija 22: Brisanje zapisa 'ZZZ'
  • Kodna linija 23: Izvršavanje transakcije brisanja.
  • Redak koda 25-27: Odabir zapisa 'XXX' i popunjavanje u varijablu l_emp_name, l_emp_no, l_salary, l_manager.
  • Redak koda 28-32: Prikaz dohvaćene vrijednosti zapisa.