Oracle PL/SQL invoegen, bijwerken, verwijderen en selecteren in [Voorbeeld]

In deze tutorial gaan we leren hoe te gebruiken SQL in PL/SQL. SQL is de feitelijke component die zorgt voor het ophalen en bijwerken van gegevens in de database, terwijl PL/SQL de component is die deze gegevens verwerkt. Verder zullen we in dit artikel ook bespreken hoe de SQL binnen het PL/SQL-blok gecombineerd kan worden.

DML-transacties in PL/SQL

DML staat voor Data Manipulatie Taal. Deze statements worden voornamelijk gebruikt om de manipulatieactiviteit uit te voeren. Het gaat om de onderstaande bewerkingen.

  • Gegevens invoegen
  • Data update
  • Gegevens verwijderen
  • Gegevensselectie

In PL/SQL kunnen we de gegevensmanipulatie alleen uitvoeren met behulp van de SQL-opdrachten.

Gegevens invoegen

In PL/SQL kunnen we de gegevens in elke tabel invoegen met behulp van het SQL-commando INSERT INTO. Deze opdracht neemt de tabelnaam, tabelkolom en kolomwaarden als invoer en voegt de waarde in de basistabel in.

Het INSERT-commando kan de waarden ook rechtstreeks uit een andere tabel halen met behulp van de 'SELECT'-instructie in plaats van de waarden voor elke kolom op te geven. Via de 'SELECT'-instructie kunnen we zoveel rijen invoegen als de basistabel bevat.

Syntax:

BEGIN
  INSERT INTO <table_name>(<column1 >,<column2>,...<column_n>)
     VALUES(<valuel><value2>,...:<value_n>);
END;
  • De bovenstaande syntaxis toont de opdracht INSERT INTO. De tabelnaam en -waarden zijn verplichte velden, terwijl kolomnamen niet verplicht zijn als de invoeginstructies waarden bevatten voor de hele kolom van de tabel.
  • Het trefwoord 'VALUES' is verplicht als de waarden afzonderlijk worden opgegeven, zoals hierboven weergegeven.

Syntax:

BEGIN
  INSERT INTO <table_name>(<columnl>,<column2>,...,<column_n>)
     SELECT <columnl>,<column2>,.. <column_n> FROM <table_name2>;
END;
  • De bovenstaande syntaxis toont de opdracht INSERT INTO die de waarden rechtstreeks uit de met behulp van het SELECT-commando.
  • Het trefwoord 'VALUES' mag in dit geval niet aanwezig zijn, omdat de waarden niet afzonderlijk worden vermeld.

Data update

Gegevensupdate betekent eenvoudigweg een update van de waarde van een willekeurige kolom in de tabel. Dit kan gedaan worden met behulp van de 'UPDATE'-instructie. Deze instructie neemt de tabelnaam, kolomnaam en waarde als invoer en werkt de gegevens bij.

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;
  • De bovenstaande syntaxis toont de UPDATE. Het trefwoord 'SET' instrueert de PL/SQL-engine om de waarde van de kolom bij te werken met de opgegeven waarde.
  • De 'WHERE'-clausule is optioneel. Als deze clausule niet wordt opgegeven, wordt de waarde van de genoemde kolom in de gehele tabel bijgewerkt.

Gegevens verwijderen

Gegevensverwijdering betekent het verwijderen van één volledig record uit de databasetabel. Hiervoor wordt het commando 'DELETE' gebruikt.

Syntax:

BEGIN
  DELETE
  FROM
  <table_name>
  WHERE <condition that uniquely identifies the record that needs to be update>; 
END;
  • De bovenstaande syntaxis toont de opdracht DELETE. Het sleutelwoord 'FROM' is optioneel en met of zonder 'FROM'-clausule gedraagt ​​het commando zich op dezelfde manier.
  • De 'WHERE'-clausule is optioneel. Als deze clausule niet wordt opgegeven, wordt de hele tabel verwijderd.

Gegevensselectie

Gegevensprojectie/ophalen betekent het ophalen van de vereiste gegevens uit de databasetabel. Dit kan worden bereikt door het commando 'SELECT' met 'INTO'-clausule te gebruiken. Het commando 'SELECT' haalt de waarden op uit de database, en de 'INTO'-clausule wijst deze waarden toe aan de lokale variabele van de database. PL/SQL-blok.

Hieronder staan ​​de punten waarmee rekening moet worden gehouden in de 'SELECT'-instructie.

  • De 'SELECT'-instructie zou slechts één record moeten retourneren terwijl de 'INTO'-clausule wordt gebruikt, omdat één variabele slechts één waarde kan bevatten. Als de 'SELECT'-instructie meer dan één waarde retourneert, wordt er een uitzondering 'TOO_MANY_ROWS' gegenereerd.
  • De 'SELECT'-instructie wijst de waarde toe aan de variabele in de 'INTO'-clausule, dus er moet ten minste één record uit de tabel worden opgehaald om de waarde in te vullen. Als er geen record is ontvangen, wordt de uitzondering 'NO_DATA_FOUND' gegenereerd.
  • Het aantal kolommen en hun datatype in de 'SELECT'-clausule moet overeenkomen met het aantal variabelen en hun datatypes in de 'INTO'-clausule.
  • De waarden worden opgehaald en ingevuld in dezelfde volgorde als vermeld in de instructie.
  • De 'WHERE'-clausule is optioneel en biedt meer beperkingen voor de records die moeten worden opgehaald.
  • De 'SELECT'-instructie kan worden gebruikt in de 'WHERE'-voorwaarde van andere DML-instructies om de waarden van de voorwaarden te definiëren.
  • De 'SELECT'-instructie bij gebruik van 'INSERT'-, 'UPDATE'-, 'DELETE'-instructies mag geen 'INTO'-clausule bevatten, omdat deze in deze gevallen geen enkele variabele zal vullen.

Syntax:

BEGIN
  SELECT <columnl>,..<column_n> INTO <vanable 1 >,. .<variable_n> 
   FROM <table_name>
   WHERE <condition to fetch the required records>;
END;
  • De bovenstaande syntaxis toont de opdracht SELECT-INTO. Het sleutelwoord 'FROM' is verplicht en identificeert de tabelnaam waaruit de gegevens moeten worden opgehaald.
  • De 'WHERE'-clausule is optioneel. Als deze clausule niet wordt opgegeven, worden de gegevens uit de hele tabel opgehaald.

Voorbeeld 1: In dit voorbeeld gaan we zien hoe we DML-bewerkingen kunnen uitvoeren in PL / SQL. We gaan de onderstaande vier records in de emp-tabel invoegen.

EMP_NAME EMP_NO SALARIS MANAGER
BBB 1000 25000 AAA
XXX 1001 10000 BBB
JJJ 1002 10000 BBB
ZZZ 1003 7500 BBB

Dan gaan we het salaris van 'XXX' updaten naar 15000, en we gaan het werknemersrecord 'ZZZ' verwijderen. Tot slot gaan we de details van de werknemer 'XXX' projecteren.

Gegevensselectie in 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;
/

Output:

Values Inserted
Values Updated
Values Deleted
Employee Detail 
Employee Name:XXX 
Employee Number:1001 
Employee Salary:15000 
Employee Manager Name:BBB

Code Verklaring:

  • Coderegel 2-5: De variabele declareren.
  • Coderegel 7-14: De records in de emp-tabel invoegen.
  • Coderegel 15: Het vastleggen van de invoegtransacties.
  • Coderegel 17-19: Het salaris van de werknemer 'XXX' bijwerken naar 15000
  • Coderegel 20: Het uitvoeren van de updatetransactie.
  • Coderegel 22: Het record van 'ZZZ' verwijderen
  • Coderegel 23: Het uitvoeren van de verwijdertransactie.
  • Coderegel 25-27: Selecteer het record 'XXX' en vul de variabele l_emp_name, l_emp_no, l_salary, l_manager in.
  • Coderegel 28-32: Weergave van de opgehaalde recordwaarde.