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

Dataurval i PL/SQL

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.

Sammanfatta detta inlägg med: