I denne vejledning skal vi lære at bruge SQL i PL / SQL. SQL er den faktiske komponent, der tager sig af at hente og opdatere data i databasen, mens PL / SQL er den komponent, der behandler disse data. Yderligere, i denne artikel vil vi også diskutere, hvordan man kombinerer SQL inden for PL / SQL-blokken.
I denne vejledning lærer du-
- Dataindsættelse
- Dataopdatering
- Sletning af data
- Valg af data
DML-transaktioner i PL / SQL
DML står for Data Manipulation Language . Disse udsagn bruges hovedsageligt til at udføre manipulationsaktiviteten. Det beskæftiger sig med nedenstående operationer.
- Dataindsættelse
- Dataopdatering
- Sletning af data
- Valg af data
I PL / SQL kan vi kun udføre datamanipulationen ved hjælp af SQL-kommandoerne.
Dataindsættelse
I PL / SQL kan vi indsætte dataene i enhver tabel ved hjælp af SQL-kommandoen INSERT INTO. Denne kommando tager tabelnavn, tabelkolonne og kolonneværdier som input og indsætter værdien i basistabellen.
INSERT-kommandoen kan også tage værdierne direkte fra en anden tabel ved hjælp af 'SELECT' -sætningen i stedet for at give værdierne for hver kolonne. Gennem 'SELECT' udsagn kan vi indsætte så mange rækker som basistabellen indeholder.
Syntaks:
BEGININSERT INTO( , ,… )VALUES( ,… : );END;
- Ovenstående syntaks viser kommandoen INSERT INTO. Tabellens navn og værdier er obligatoriske felter, hvorimod kolonnenavne ikke er obligatoriske, hvis indsætningsudsagnene har værdier for hele kolonnen i tabellen.
- Nøgleordet 'VÆRDIER' er obligatorisk, hvis værdierne gives separat som vist ovenfor.
Syntaks:
BEGININSERT INTO( , ,… , )SELECT , ,… FROM ;END;
- Ovenstående syntaks viser INSERT INTO-kommandoen, der tager værdierne direkte fra
ved hjælp af SELECT-kommandoen. - Nøgleordet 'VÆRDIER' bør ikke være til stede i dette tilfælde, da værdierne ikke er angivet separat.
Dataopdatering
Dataopdatering betyder simpelthen en opdatering af værdien af en hvilken som helst kolonne i tabellen. Dette kan gøres ved hjælp af 'UPDATE' erklæring. Denne erklæring tager tabelnavn, kolonnenavn og værdi som input og opdaterer dataene.
Syntaks:
BEGIN UPDATESET = , = , = WHERE ;END;
- Ovenstående syntaks viser UPDATE. Nøgleordet 'SET' instruerer, at PL / SQL-motoren opdaterer kolonnens værdi med den angivne værdi.
- 'WHERE' klausul er valgfri. Hvis denne klausul ikke er givet, opdateres værdien af den nævnte kolonne i hele tabellen.
Sletning af data
Sletning af data betyder at slette en fuld post fra databasetabellen. Kommandoen 'SLET' bruges til dette formål.
Syntaks:
BEGINDELETEFROMWHERE ;END;
- Ovenstående syntaks viser kommandoen SLET. Nøgleordet 'FROM' er valgfrit og med eller uden 'FROM'-klausul opfører kommandoen på samme måde.
- 'WHERE' klausul er valgfri. Hvis denne klausul ikke er givet, slettes hele tabellen.
Valg af data
Dataprojektion / hentning betyder at hente de krævede data fra databasetabellen. Dette kan opnås ved at bruge kommandoen 'SELECT' med 'INTO' klausul. Kommandoen 'SELECT' henter værdierne fra databasen, og 'INTO' -sætningen tildeler disse værdier til den lokale variabel i PL / SQL-blokken.
Nedenfor er de punkter, der skal overvejes i 'SELECT' -erklæringen.
- 'SELECT' sætning skal kun returnere en post, mens du bruger 'INTO' klausul, da en variabel kun kan indeholde en værdi. Hvis sætningen 'SELECT' returnerer mere end en værdi end undtagelsen 'TOO_MANY_ROWS'.
- 'SELECT' sætning tildeler værdien til variablen i 'INTO' klausulen, så den skal hente mindst en post fra tabellen for at udfylde værdien. Hvis den ikke fik nogen rekord, hæves undtagelsen 'NO_DATA_FOUND'.
- Antallet af kolonner og deres datatype i "SELECT" -sætningen skal matche antallet af variabler og deres datatyper i "INTO" -sætningen.
- Værdierne hentes og udfyldes i samme rækkefølge som nævnt i erklæringen.
- 'WHERE'-klausul er valgfri, der gør det muligt at have mere begrænsning på de poster, der skal hentes.
- 'SELECT' sætning kan bruges i 'WHERE'-tilstanden i andre DML-sætninger til at definere værdierne for betingelserne.
- Sætningen 'SELECT', når du bruger 'INSERT', 'UPDATE', 'DELETE' udsagn, bør ikke have 'INTO' -sætningen, da den ikke udfylder nogen variabel i disse tilfælde.
Syntaks:
BEGINSELECT,… INTO ,… FROM WHERE ;END;
- Ovenstående syntaks viser kommandoen SELECT-INTO. Nøgleordet 'FROM' er obligatorisk, der identificerer det tabelnavn, hvorfra dataene skal hentes.
- 'WHERE' klausul er valgfri. Hvis denne klausul ikke er angivet, hentes dataene fra hele tabellen.
Eksempel 1 : I dette eksempel skal vi se, hvordan man udfører DML-operationer i PL / SQL. Vi vil indsætte nedenstående fire poster i emp-tabellen.
EMP_NAME | EMP_NO | LØN | MANAGER |
BBB | 1000 | 25000 | AAA |
XXX | 1001 | 10000 | BBB |
ÅÅÅ | 1002 | 10000 | BBB |
ZZZ | 1003 | 7500 | BBB |
Derefter opdaterer vi lønnen på 'XXX' til 15000, og vi sletter medarbejderjournalen 'ZZZ'. Endelig skal vi projicere detaljerne for medarbejderen 'XXX'.
DECLAREl_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,managedVALUES(‘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 EMPSET salary=15000WHERE 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;/
Produktion:
Values InsertedValues UpdatedValues DeletedEmployee DetailEmployee Name:XXXEmployee Number:1001Employee Salary:15000Employee Manager Name:BBB
Kode Forklaring:
- Kodelinje 2-5 : Erklæring af variablen.
- Kodelinje 7-14 : Indsættelse af posterne i emp-tabellen.
- Kodelinje 15 : Foretag indsættelsestransaktioner.
- Kodelinje 17-19 : Opdatering af løn til medarbejderen 'XXX' til 15000
- Kodelinje 20 : Foretagelse af opdateringstransaktionen.
- Kodelinje 22 : Sletning af posten for 'ZZZ'
- Kodelinje 23 : Foretag sletningstransaktionen.
- Kodelinje 25-27 : Valg af posten 'XXX' og udfyldning i variablen l_emp_name, l_emp_no, l_salary, l_manager.
- Kodelinje 28-32 : Visning af den hentede posterværdi.