Oracle PL/SQL Infoga, Uppdatera, Ta bort och välj i [Exempel]
I den här handledningen ska vi lära oss hur man använder SQL i PL/SQL. SQL är den faktiska komponenten som tar hand om hämtning och uppdatering av data i databasen medan PL/SQL är komponenten som bearbetar dessa data. I den här artikeln kommer vi också att diskutera hur man kombinerar SQL i PL/SQL-blocket.
DML-transaktioner i PL/SQL
DML står för Datahanteringsspråk. Dessa uttalanden används huvudsakligen för att utföra manipulationsaktiviteten. Den handlar om operationerna nedan.
- Datainsättning
- Uppdatering av data
- Radering av data
- Dataval
I PL/SQL kan vi endast utföra datamanipulation genom att använda SQL-kommandon.
Datainsättning
I PL/SQL kan vi infoga data i vilken tabell som helst med SQL-kommandot INSERT INTO. Detta kommando tar tabellnamnet, tabellkolumnen och kolumnvärdena som indata och infogar värdet i bastabellen.
Kommandot INSERT kan också ta värdena direkt från en annan tabell med hjälp av "SELECT"-satsen istället för att ge värdena för varje kolumn. Genom 'SELECT'-satsen kan vi infoga så många rader som bastabellen innehåller.
Syntax:
BEGIN
INSERT INTO <table_name>(<column1 >,<column2>,...<column_n>)
VALUES(<valuel><value2>,...:<value_n>);
END;
- Ovanstående syntax visar kommandot INSERT INTO. Tabellnamnet och värdena är obligatoriska fält, medan kolumnnamn inte är obligatoriska om infogningssatserna har värden för alla kolumner i tabellen.
- Nyckelordet "VÄRDEN" är obligatoriskt om värdena anges separat enligt ovan.
Syntax:
BEGIN
INSERT INTO <table_name>(<columnl>,<column2>,...,<column_n>)
SELECT <columnl>,<column2>,.. <column_n> FROM <table_name2>;
END;
- Ovanstående syntax visar kommandot INSERT INTO som tar värdena direkt från med kommandot SELECT.
- Nyckelordet "VÄRDEN" ska inte finnas i det här fallet eftersom värdena inte anges separat.
Uppdatering av data
Datauppdatering betyder helt enkelt en uppdatering av värdet för valfri kolumn i tabellen. Detta kan göras med 'UPDATE'-satsen. Denna sats tar tabellnamnet, kolumnnamnet och värdet som indata och uppdaterar data.
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;
- Ovanstående syntax visar UPPDATERING. Nyckelordet 'SET' instruerar den PL/SQL-motorn att uppdatera värdet på kolumnen med det angivna värdet.
- "WHERE"-satsen är valfri. Om denna klausul inte ges, kommer värdet på den nämnda kolumnen i hela tabellen att uppdateras.
Radering av data
Dataradering innebär att ta bort en hel post från databastabellen. Kommandot 'DELETE' används för detta ändamål.
Syntax:
BEGIN DELETE FROM <table_name> WHERE <condition that uniquely identifies the record that needs to be update>; END;
- Ovanstående syntax visar kommandot DELETE. Nyckelordet 'FROM' är valfritt och med eller utan 'FROM'-sats fungerar kommandot på samma sätt.
- "WHERE"-satsen är valfri. Om denna klausul inte ges kommer hela tabellen att raderas.
Dataval
Dataprojektion/hämtning innebär att hämta de nödvändiga data från databastabellen. Detta kan uppnås genom att använda kommandot 'SELECT' med 'INTO'-satsen. Kommandot 'SELECT' hämtar värdena från databasen, och 'INTO'-satsen kommer att tilldela dessa värden till den lokala variabeln i PL/SQL-block.
Nedan är de punkter som måste beaktas i 'SELECT'-satsen.
- 'SELECT'-satsen bör endast returnera en post när du använder 'INTO'-satsen eftersom en variabel endast kan innehålla ett värde. Om "SELECT"-satsen returnerar mer än ett värde än "TOO_MANY_ROWS" kommer undantaget att höjas.
- 'SELECT'-satsen kommer att tilldela värdet till variabeln i 'INTO'-satsen, så den måste hämta minst en post från tabellen för att fylla i värdet. Om det inte fick något rekord, så höjs undantaget 'NO_DATA_FOUND'.
- Antalet kolumner och deras datatyp i 'SELECT'-satsen bör matcha antalet variabler och deras datatyper i 'INTO'-satsen.
- Värdena hämtas och fylls i i samma ordning som nämns i uttalandet.
- 'WHERE'-satsen är valfri som gör det möjligt att ha fler begränsningar på de poster som kommer att hämtas.
- 'SELECT'-satsen kan användas i villkoret 'WHERE' för andra DML-satser för att definiera värdena för villkoren.
- 'SELECT'-satsen när du använder 'INSERT', 'UPDATE', 'DELETE'-satser bör inte ha 'INTO'-satsen eftersom den inte kommer att fylla i någon variabel i dessa fall.
Syntax:
BEGIN SELECT <columnl>,..<column_n> INTO <vanable 1 >,. .<variable_n> FROM <table_name> WHERE <condition to fetch the required records>; END;
- Ovanstående syntax visar kommandot SELECT-INTO. Nyckelordet 'FRÅN' är obligatoriskt som identifierar tabellnamnet från vilket data måste hämtas.
- "WHERE"-satsen är valfri. Om denna klausul inte ges, kommer data från hela tabellen att hämtas.
Exempelvis 1: I det här exemplet kommer vi att se hur man utför DML-operationer i PL / SQL. Vi kommer att infoga nedanstående fyra poster i emp-tabellen.
| EMP_NAME | EMP_NO | LÖN | CHEF |
|---|---|---|---|
| BBB | 1000 | 25000 | AAA |
| XXX | 1001 | 10000 | BBB |
| ÅÅÅÅ | 1002 | 10000 | BBB |
| ZZZ | 1003 | 7500 | BBB |
Sedan kommer vi att uppdatera lönen för 'XXX' till 15000, och vi kommer att radera personalposten 'ZZZ'. Slutligen kommer vi att projicera detaljerna om den anställde '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;
/
Produktion:
Values Inserted Values Updated Values Deleted Employee Detail Employee Name:XXX Employee Number:1001 Employee Salary:15000 Employee Manager Name:BBB
Kodförklaring:
- Kodrad 2-5: Deklarerar variabeln.
- Kodrad 7-14: Infogar posterna i emp-tabellen.
- Kodrad 15: Begår infogningstransaktionerna.
- Kodrad 17-19: Uppdatering av lönen för den anställde 'XXX' till 15000 XNUMX
- Kodrad 20: Begår uppdateringstransaktionen.
- Kodrad 22: Raderar posten för 'ZZZ'
- Kodrad 23: Begår raderingstransaktionen.
- Kodrad 25-27: Välj posten för 'XXX' och fylla i variabeln l_emp_name, l_emp_no, l_salary, l_manager.
- Kodrad 28-32: Visar värdet för hämtade poster.

