Oracle PL/SQL beszúrás, frissítés, törlés és kijelölés [Példa]

Ebben az oktatóanyagban megtanuljuk, hogyan kell használni SQL PL/SQL-ben. Az SQL az a tényleges összetevő, amely gondoskodik az adatbázisban lévő adatok lekéréséről és frissítéséről, míg a PL/SQL az az összetevő, amely ezeket az adatokat feldolgozza. Továbbá ebben a cikkben azt is megvitatjuk, hogyan kombinálhatjuk az SQL-t a PL/SQL blokkon belül.

DML-tranzakciók PL/SQL-ben

A DML jelentése Adatmanipulációs nyelv. Ezeket a kijelentéseket főként a manipulációs tevékenység végrehajtására használják. Az alábbi műveletekkel foglalkozik.

  • Adatbeillesztés
  • Adatfrissítés
  • Adatok törlése
  • Adatok kiválasztása

PL/SQL-ben az adatkezelést csak az SQL parancsok használatával tudjuk elvégezni.

Adatbeillesztés

PL/SQL-ben az INSERT INTO SQL paranccsal bármilyen táblába beszúrhatjuk az adatokat. Ez a parancs a tábla nevét, a tábla oszlopát és az oszlopértékeket veszi be bemenetként, és beilleszti az értéket az alaptáblázatba.

Az INSERT parancs közvetlenül egy másik táblából is átveheti az értékeket a „SELECT” utasítás használatával, ahelyett, hogy minden oszlophoz megadná az értékeket. A 'SELECT' utasítással annyi sort szúrhatunk be, amennyit az alaptábla tartalmaz.

Syntax:

BEGIN
  INSERT INTO <table_name>(<column1 >,<column2>,...<column_n>)
     VALUES(<valuel><value2>,...:<value_n>);
END;
  • A fenti szintaxis az INSERT INTO parancsot mutatja. A tábla neve és értékei kötelezően kitöltendő mezők, míg az oszlopnevek nem kötelezőek, ha az insert utasítások a tábla összes oszlopához rendelkeznek értékkel.
  • Az 'ÉRTÉKEK' kulcsszó kötelező megadása, ha az értékeket a fentiek szerint külön adjuk meg.

Syntax:

BEGIN
  INSERT INTO <table_name>(<columnl>,<column2>,...,<column_n>)
     SELECT <columnl>,<column2>,.. <column_n> FROM <table_name2>;
END;
  • A fenti szintaxis az INSERT INTO parancsot mutatja, amely az értékeket közvetlenül a a SELECT paranccsal.
  • Az 'ÉRTÉKEK' kulcsszó ebben az esetben nem szerepelhet, mivel az értékek nincsenek külön megadva.

Adatfrissítés

Az adatfrissítés egyszerűen a táblázat bármely oszlopa értékének frissítését jelenti. Ezt az 'UPDATE' utasítással lehet megtenni. Ez az utasítás a tábla nevét, az oszlop nevét és az értéket veszi be bemenetként, és frissíti az adatokat.

Syntax:

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;
  • A fenti szintaxis az UPDATE-et mutatja. A „SET” kulcsszó arra utasítja a PL/SQL motort, hogy frissítse az oszlop értékét a megadott értékkel.
  • A „WHERE” záradék nem kötelező. Ha ez a záradék nincs megadva, akkor a teljes táblázatban az említett oszlop értéke frissül.

Adatok törlése

Az adattörlés egy teljes rekord törlését jelenti az adatbázistáblából. Erre a célra a 'DELETE' parancsot használjuk.

Syntax:

BEGIN
  DELETE
  FROM
  <table_name>
  WHERE <condition that uniquely identifies the record that needs to be update>; 
END;
  • A fenti szintaxis a DELETE parancsot mutatja. A „FROM” kulcsszó nem kötelező, és „FROM” záradékkal vagy anélkül a parancs ugyanúgy viselkedik.
  • A „WHERE” záradék nem kötelező. Ha ez a záradék nincs megadva, akkor a teljes tábla törlődik.

Adatok kiválasztása

Az adatkivetítés/lekérés azt jelenti, hogy lekérjük a szükséges adatokat az adatbázistáblából. Ezt a 'SELECT' paranccsal és az 'INTO' záradékkal lehet elérni. A 'SELECT' parancs lekéri az értékeket az adatbázisból, az 'INTO' záradék pedig hozzárendeli ezeket az értékeket a helyi változóhoz. PL/SQL blokk.

Az alábbiakban felsoroljuk azokat a pontokat, amelyeket figyelembe kell venni a „SELECT” utasításban.

  • A 'SELECT' utasításnak csak egy rekordot kell visszaadnia, míg az 'INTO' záradékot használja, mivel egy változó csak egy értéket tartalmazhat. Ha a „SELECT” utasítás egynél több értéket ad vissza, akkor a „TOO_MANY_ROWS” kivétel megjelenik.
  • A „SELECT” utasítás hozzárendeli az értéket az „INTO” záradékban lévő változóhoz, ezért legalább egy rekordot be kell szereznie a táblából az érték feltöltéséhez. Ha nem kapott rekordot, akkor a „NO_DATA_FOUND” kivétel megjelenik.
  • A „SELECT” záradékban lévő oszlopok számának és adattípusának meg kell egyeznie az „INTO” záradékban lévő változók számával és adattípusaival.
  • Az értékek lekérése és feltöltése a nyilatkozatban említett sorrendben történik.
  • A „WHERE” záradék nem kötelező, amely lehetővé teszi a lekérendő rekordok további korlátozását.
  • A 'SELECT' utasítás használható más DML utasítások 'WHERE' feltételében a feltételek értékeinek meghatározására.
  • Az 'INSERT', 'UPDATE', 'DELETE' utasítások használatakor a 'SELECT' utasítás nem tartalmazhat 'INTO' záradékot, mivel ezekben az esetekben nem tölt fel változót.

Syntax:

BEGIN
  SELECT <columnl>,..<column_n> INTO <vanable 1 >,. .<variable_n> 
   FROM <table_name>
   WHERE <condition to fetch the required records>;
END;
  • A fenti szintaxis a SELECT-INTO parancsot mutatja. A 'FROM' kulcsszó kötelező, amely azonosítja a tábla nevét, amelyből az adatokat le kell kérni.
  • A „WHERE” záradék nem kötelező. Ha ez a záradék nincs megadva, akkor a rendszer a teljes táblából lekéri az adatokat.

Példa 1: Ebben a példában látni fogjuk, hogyan hajthatunk végre DML-műveleteket PL / SQL. Az alábbi négy rekordot beszúrjuk az emp táblába.

EMP_NAME EMP_NO FIZETÉS MANAGER
BBB 1000 25000 AAA
XXX 1001 10000 BBB
ÉÉÉÉ 1002 10000 BBB
ZZZ 1003 7500 BBB

Ezután frissítjük a 'XXX' fizetését 15000-re, és töröljük a 'ZZZ' alkalmazotti rekordot. Végül kivetítjük a „XXX” alkalmazott adatait.

Adatok kiválasztása PL/SQL-ben

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

output:

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

Kód magyarázata:

  • Kódsor 2-5: A változó deklarálása.
  • Kódsor 7-14: A rekordok beszúrása az emp táblába.
  • 15. kódsor: Beillesztési tranzakciók véglegesítése.
  • Kódsor 17-19: Az „XXX” alkalmazott fizetésének frissítése 15000-re
  • 20. kódsor: A frissítési tranzakció véglegesítése.
  • 22. kódsor: A 'ZZZ' rekord törlése
  • 23. kódsor: A törlési tranzakció végrehajtása.
  • Kódsor 25-27: A 'XXX' rekord kiválasztása és az l_emp_name, l_emp_no, l_salary, l_manager változóba való feltöltése.
  • Kódsor 28-32: A lekért rekordok értékének megjelenítése.