Oracle PL/SQL Sett inn, oppdater, slett og velg i [Eksempel]
I denne opplรฆringen skal vi lรฆre รฅ bruke SQL i PL/SQL. SQL er selve komponenten som tar seg av henting og oppdatering av data i databasen, mens PL/SQL er komponenten som behandler disse dataene. Videre, i denne artikkelen, vil vi ogsรฅ diskutere hvordan du kombinerer SQL i PL/SQL-blokken.
DML-transaksjoner i PL/SQL
DML stรฅr for Datamanipulasjonssprรฅk. Disse uttalelsene brukes hovedsakelig til รฅ utfรธre manipulasjonsaktiviteten. Den omhandler operasjonene nedenfor.
- Datainnsetting
- Dataoppdatering
- Sletting av data
- Datavalg
I PL/SQL kan vi bare gjรธre datamanipulasjonen ved รฅ bruke SQL-kommandoene.
Datainnsetting
I PL/SQL kan vi sette inn dataene i en hvilken som helst tabell ved รฅ bruke SQL-kommandoen INSERT INTO. Denne kommandoen tar tabellnavnet, tabellkolonnen og kolonneverdiene som input og setter inn verdien i basistabellen.
INSERT-kommandoen kan ogsรฅ ta verdiene direkte fra en annen tabell ved รฅ bruke 'SELECT'-setningen i stedet for รฅ gi verdiene for hver kolonne. Gjennom 'SELECT'-setningen kan vi sette inn sรฅ mange rader som basistabellen inneholder.
Syntaks:
BEGIN
INSERT INTO <table_name>(<column1 >,<column2>,...<column_n>)
VALUES(<valuel><value2>,...:<value_n>);
END;
- Syntaksen ovenfor viser INSERT INTO-kommandoen. Tabellnavnet og verdiene er obligatoriske felt, mens kolonnenavn ikke er obligatoriske hvis insert-setningene har verdier for alle kolonnene i tabellen.
- Nรธkkelordet 'VERDIER' er obligatorisk hvis verdiene er gitt separat som vist ovenfor.
Syntaks:
BEGIN
INSERT INTO <table_name>(<columnl>,<column2>,...,<column_n>)
SELECT <columnl>,<column2>,.. <column_n> FROM <table_name2>;
END;
- Syntaksen ovenfor viser INSERT INTO-kommandoen som tar verdiene direkte fra ved รฅ bruke SELECT-kommandoen.
- Sรธkeordet 'VERDIER' skal ikke vรฆre til stede i dette tilfellet, siden verdiene ikke er gitt separat.
Dataoppdatering
Dataoppdatering betyr ganske enkelt en oppdatering av verdien til en hvilken som helst kolonne i tabellen. Dette kan gjรธres ved รฅ bruke 'UPDATE'-setningen. Denne setningen tar tabellnavnet, kolonnenavnet og verdien som input og oppdaterer dataene.
Syntaks:
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;
- Syntaksen ovenfor viser OPPDATERING. Nรธkkelordet 'SET' instruerer at PL/SQL-motoren skal oppdatere verdien av kolonnen med verdien som er gitt.
- 'WHERE'-klausulen er valgfri. Hvis denne klausulen ikke er gitt, vil verdien av den nevnte kolonnen i hele tabellen bli oppdatert.
Sletting av data
Datasletting betyr รฅ slette รฉn full post fra databasetabellen. Kommandoen 'DELETE' brukes til dette formรฅlet.
Syntaks:
BEGIN DELETE FROM <table_name> WHERE <condition that uniquely identifies the record that needs to be update>; END;
- Syntaksen ovenfor viser DELETE-kommandoen. Nรธkkelordet 'FROM' er valgfritt og med eller uten 'FROM'-klausul oppfรธrer kommandoen seg pรฅ samme mรฅte.
- 'WHERE'-klausulen er valgfri. Hvis denne klausulen ikke er gitt, vil hele tabellen bli slettet.
Datavalg
Dataprojeksjon/henting betyr รฅ hente de nรธdvendige dataene fra databasetabellen. Dette kan oppnรฅs ved รฅ bruke kommandoen 'SELECT' med 'INTO'-klausulen. 'SELECT'-kommandoen vil hente verdiene fra databasen, og 'INTO'-klausulen vil tilordne disse verdiene til den lokale variabelen til PL/SQL-blokk.
Nedenfor er punktene som mรฅ vurderes i 'SELECT'-setningen.
- 'SELECT'-setningen skal bare returnere รฉn post mens du bruker 'INTO'-klausulen, da รฉn variabel bare kan inneholde รฉn verdi. Hvis "SELECT"-setningen returnerer mer enn รฉn verdi, vil unntaket "TOO_MANY_ROWS" รธkes.
- 'SELECT'-setningen vil tilordne verdien til variabelen i 'INTO'-leddet, sรฅ den mรฅ hente minst รฉn post fra tabellen for รฅ fylle ut verdien. Hvis den ikke fikk noen post, er unntaket 'NO_DATA_FOUND' hevet.
- Antall kolonner og deres datatype i 'SELECT'-leddet skal samsvare med antallet variabler og deres datatyper i 'INTO'-leddet.
- Verdiene hentes og fylles ut i samme rekkefรธlge som nevnt i setningen.
- 'WHERE'-klausulen er valgfri som gjรธr det mulig รฅ ha flere begrensninger pรฅ postene som skal hentes.
- 'SELECT'-setningen kan brukes i 'WHERE'-tilstanden til andre DML-setninger for รฅ definere verdiene til betingelsene.
- 'SELECT'-setningen ved bruk av 'INSERT', 'UPDATE', 'DELETE'-setninger skal ikke ha 'INTO'-ledd, da den ikke vil fylle ut noen variabel i disse tilfellene.
Syntaks:
BEGIN SELECT <columnl>,..<column_n> INTO <vanable 1 >,. .<variable_n> FROM <table_name> WHERE <condition to fetch the required records>; END;
- Syntaksen ovenfor viser SELECT-INTO-kommandoen. Nรธkkelordet 'FROM' er obligatorisk som identifiserer tabellnavnet som dataene mรฅ hentes fra.
- 'WHERE'-klausulen er valgfri. Hvis denne klausulen ikke er gitt, vil dataene fra hele tabellen bli hentet.
Eksempel 1: I dette eksemplet skal vi se hvordan du utfรธrer DML-operasjoner i PL / SQL. Vi skal sette inn de fire postene nedenfor i emp-tabellen.
| EMP_NAME | EMP_NO | LรNN | SJEF |
|---|---|---|---|
| BBB | 1000 | 25000 | AAA |
| XXX | 1001 | 10000 | BBB |
| ร ร ร | 1002 | 10000 | BBB |
| ZZZ | 1003 | 7500 | BBB |
Deretter skal vi oppdatere lรธnnen til 'XXX' til 15000, og vi skal slette ansattposten 'ZZZ'. Til slutt skal vi projisere detaljene til den ansatte 'XXX'.
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;
/
Utgang:
Values Inserted Values Updated Values Deleted Employee Detail Employee Name:XXX Employee Number:1001 Employee Salary:15000 Employee Manager Name:BBB
Kodeforklaring:
- Kodelinje 2-5: Deklarerer variabelen.
- Kodelinje 7-14: Setter inn postene i emp-tabellen.
- Kodelinje 15: Forplikter innsettingstransaksjonene.
- Kodelinje 17-19: Oppdaterer lรธnnen til den ansatte 'XXX' til 15000
- Kodelinje 20: Begรฅr oppdateringstransaksjonen.
- Kodelinje 22: Sletter posten til 'ZZZ'
- Kodelinje 23: Begรฅr slettetransaksjonen.
- Kodelinje 25-27: Velger posten 'XXX' og fyller inn i variabelen l_emp_name, l_emp_no, l_salary, l_manager.
- Kodelinje 28-32: Viser verdien for hentede poster.

