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.
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.