Oracle PL/SQL Einfügen, Aktualisieren, Löschen und Auswählen in [Beispiel]
In diesem Tutorial lernen wir die Verwendung SQL in PL/SQL. SQL ist die eigentliche Komponente, die sich um das Abrufen und Aktualisieren von Daten in der Datenbank kümmert, während PL/SQL die Komponente ist, die diese Daten verarbeitet. Darüber hinaus besprechen wir in diesem Artikel auch, wie man SQL innerhalb des PL/SQL-Blocks kombiniert.
DML-Transaktionen in PL/SQL
DML steht für Datenmanipulierungssprache. Diese Anweisungen werden hauptsächlich verwendet, um die Manipulationsaktivität durchzuführen. Sie befassen sich mit den folgenden Vorgängen.
- Dateneinfügung
- Datenaktualisierung
- Daten löschen
- Datenauswahl
In PL/SQL können wir die Datenmanipulation nur mithilfe der SQL-Befehle durchführen.
Dateneinfügung
In PL/SQL können wir die Daten mit dem SQL-Befehl INSERT INTO in jede Tabelle einfügen. Dieser Befehl verwendet den Tabellennamen, die Tabellenspalte und die Spaltenwerte als Eingabe und fügt den Wert in die Basistabelle ein.
Der INSERT-Befehl kann die Werte mithilfe der SELECT-Anweisung auch direkt aus einer anderen Tabelle übernehmen, anstatt die Werte für jede Spalte anzugeben. Mit der SELECT-Anweisung können wir so viele Zeilen einfügen, wie die Basistabelle enthält.
Syntax:
BEGIN
INSERT INTO <table_name>(<column1 >,<column2>,...<column_n>)
VALUES(<valuel><value2>,...:<value_n>);
END;
- Die obige Syntax zeigt den Befehl INSERT INTO. Der Tabellenname und die Werte sind Pflichtfelder, wohingegen Spaltennamen nicht Pflichtfelder sind, wenn die Einfügeanweisungen Werte für alle Spalten der Tabelle enthalten.
- Das Schlüsselwort „VALUES“ ist obligatorisch, wenn die Werte wie oben gezeigt separat angegeben werden.
Syntax:
BEGIN
INSERT INTO <table_name>(<columnl>,<column2>,...,<column_n>)
SELECT <columnl>,<column2>,.. <column_n> FROM <table_name2>;
END;
- Die obige Syntax zeigt den Befehl INSERT INTO, der die Werte direkt aus dem übernimmt mit dem SELECT-Befehl.
- Das Schlüsselwort „VALUES“ sollte in diesem Fall nicht vorhanden sein, da die Werte nicht separat angegeben werden.
Datenaktualisierung
Datenaktualisierung bedeutet einfach eine Aktualisierung des Werts einer beliebigen Spalte in der Tabelle. Dies kann mit der Anweisung „UPDATE“ erfolgen. Diese Anweisung verwendet den Tabellennamen, den Spaltennamen und den Wert als Eingabe und aktualisiert die Daten.
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;
- Die obige Syntax zeigt das UPDATE. Das Schlüsselwort „SET“ weist die PL/SQL-Engine an, den Wert der Spalte mit dem angegebenen Wert zu aktualisieren.
- Die „WHERE“-Klausel ist optional. Wenn diese Klausel nicht angegeben ist, wird der Wert der genannten Spalte in der gesamten Tabelle aktualisiert.
Daten löschen
Beim Löschen von Daten wird ein vollständiger Datensatz aus der Datenbanktabelle gelöscht. Hierzu dient der Befehl „DELETE“.
Syntax:
BEGIN DELETE FROM <table_name> WHERE <condition that uniquely identifies the record that needs to be update>; END;
- Die obige Syntax zeigt den DELETE-Befehl. Das Schlüsselwort „FROM“ ist optional und mit oder ohne „FROM“-Klausel verhält sich der Befehl auf die gleiche Weise.
- Die „WHERE“-Klausel ist optional. Wenn diese Klausel nicht angegeben ist, wird die gesamte Tabelle gelöscht.
Datenauswahl
Datenprojektion/-abruf bedeutet, die erforderlichen Daten aus der Datenbanktabelle abzurufen. Dies kann durch die Verwendung des Befehls „SELECT“ mit der Klausel „INTO“ erreicht werden. Der Befehl „SELECT“ ruft die Werte aus der Datenbank ab und die Klausel „INTO“ weist diese Werte der lokalen Variablen zu PL/SQL-Block.
Nachfolgend sind die Punkte aufgeführt, die in der SELECT-Anweisung berücksichtigt werden müssen.
- Die „SELECT“-Anweisung sollte bei Verwendung der „INTO“-Klausel nur einen Datensatz zurückgeben, da eine Variable nur einen Wert enthalten kann. Wenn die SELECT-Anweisung mehr als einen Wert zurückgibt, wird die Ausnahme „TOO_MANY_ROWS“ ausgelöst.
- Die „SELECT“-Anweisung weist den Wert der Variablen in der „INTO“-Klausel zu, daher muss mindestens ein Datensatz aus der Tabelle abgerufen werden, um den Wert zu füllen. Wenn kein Datensatz abgerufen wurde, wird die Ausnahme „NO_DATA_FOUND“ ausgelöst.
- Die Anzahl der Spalten und deren Datentypen in der Klausel „SELECT“ sollten mit der Anzahl der Variablen und deren Datentypen in der Klausel „INTO“ übereinstimmen.
- Die Werte werden in der gleichen Reihenfolge abgerufen und aufgefüllt, wie in der Anweisung angegeben.
- Die „WHERE“-Klausel ist optional und ermöglicht eine stärkere Einschränkung der abzurufenden Datensätze.
- Die SELECT-Anweisung kann in der WHERE-Bedingung anderer DML-Anweisungen verwendet werden, um die Werte der Bedingungen zu definieren.
- Die „SELECT“-Anweisung sollte bei Verwendung der Anweisungen „INSERT“, „UPDATE“ und „DELETE“ keine „INTO“-Klausel enthalten, da sie in diesen Fällen keine Variable auffüllt.
Syntax:
BEGIN SELECT <columnl>,..<column_n> INTO <vanable 1 >,. .<variable_n> FROM <table_name> WHERE <condition to fetch the required records>; END;
- Die obige Syntax zeigt den SELECT-INTO-Befehl. Das Schlüsselwort „FROM“ ist obligatorisch und identifiziert den Tabellennamen, aus dem die Daten abgerufen werden müssen.
- Die „WHERE“-Klausel ist optional. Wenn diese Klausel nicht angegeben ist, werden die Daten aus der gesamten Tabelle abgerufen.
Beispiel 1: In diesem Beispiel werden wir sehen, wie man DML-Operationen durchführt in PL / SQL. Wir werden die folgenden vier Datensätze in die emp-Tabelle einfügen.
| EMP_NAME | EMP_NO | GEHALT | MANAGER |
|---|---|---|---|
| BBB | 1000 | 25000 | AAA |
| XXX | 1001 | 10000 | BBB |
| Yyy | 1002 | 10000 | BBB |
| ZZZ | 1003 | 7500 | BBB |
Dann aktualisieren wir das Gehalt von „XXX“ auf 15000 und löschen den Mitarbeiterdatensatz „ZZZ“. Abschließend projizieren wir die Details des Mitarbeiters „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;
/
Ausgang:
Values Inserted Values Updated Values Deleted Employee Detail Employee Name:XXX Employee Number:1001 Employee Salary:15000 Employee Manager Name:BBB
Code-Erklärung:
- Codezeile 2-5: Deklarieren der Variablen.
- Codezeile 7-14: Einfügen der Datensätze in die emp-Tabelle.
- Codezeile 15: Die Einfügetransaktionen werden festgeschrieben.
- Codezeile 17-19: Aktualisierung des Gehalts des Mitarbeiters „XXX“ auf 15000
- Codezeile 20: Die Aktualisierungstransaktion wird festgeschrieben.
- Codezeile 22: Datensatz von „ZZZ“ wird gelöscht
- Codezeile 23: Die Löschtransaktion wird festgeschrieben.
- Codezeile 25-27: Wählen Sie den Datensatz „XXX“ aus und füllen Sie ihn in die Variablen l_emp_name, l_emp_no, l_salary, l_manager ein.
- Codezeile 28-32: Zeigt den Wert der abgerufenen Datensätze an.

