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 zur Durchführung der Manipulationsaktivität verwendet. Es befasst sich mit den folgenden Operationen.

  • 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 DML-Operationen ausgeführt werden 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“. Zum Schluss werden wir das de projizierentails des Mitarbeiters „XXX“.

Datenauswahl 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;
/

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.