Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Tabellentyp in Oracle PL SQL-Beispiel

PL SQL-Tabellentypen sind eigentlich Sammlungen, wie ein Array. Mit Hilfe von PL SQL Collections können Sie Massendaten effizient verarbeiten. In diesem Beitrag werde ich Ihnen sehr grundlegende und am häufigsten verwendete Befehle für PL SQL-Tabellentypsammlungen beibringen. Unten sehen Sie den Tabellentyp im Oracle PL SQL-Beispiel.

Zuerst müssen Sie es im Deklarationsabschnitt des PL SQL-Blocks deklarieren. Hier ist die Syntax mit Beispiel:

Tabellentyp in Oracle PL SQL-Beispiel

1. Deklarieren Sie PL SQL-Tabellentypen

Type any_table_type is table of emp%rowtype index by binary_integer;
emp_rec any_table_type;

Die obigen Befehle deklarieren den Tabellentyp any_table_type des Tabellenzeilentyps emp und initialisieren ihn dann mit emp_rec. Nach der Deklaration können Sie ihm die Werte manuell zuweisen. Unten ist das Beispiel:

2. PL SQL-Tabellentypen Werte zuweisen

set serveroutput on;
declare
Type any_table_type is table of emp%rowtype 
    index by binary_integer;
emp_rec any_table_type;
begin
emp_rec(1).ename := 'abc'; /* assigning values */
emp_rec(2).ename := 'xyz';
dbms_output.put_line(emp_rec(1).ename); /* accessing values */
dbms_output.put_line(emp_rec(2).ename);
end;

Da PL SQL-Tabellen Arrays ähnlich sind, sollten die Werte wie oben gezeigt durch Angabe der Array-Elementnummer zugewiesen werden. Im Folgenden finden Sie ein Beispiel zum Löschen aus PL SQL-Tabellentypsammlungen.

3. Elemente aus PL SQL-Tabellentypen löschen

set serveroutput on;
declare
Type any_table_type is table of emp%rowtype index by binary_integer;
emp_rec any_table_type;
begin
emp_rec(1).ename := 'abc';
emp_rec(2).ename := 'xyz';
emp_rec.delete(1); /* will delete first element */
for i in emp_rec.first .. emp_rec.last loop /* loop through the array */
dbms_output.put_line(emp_rec(i).ename);
end loop;
end;

Das obige Beispiel löscht das erste Element und druckt nur das zweite. Wenn Sie den obigen Block ausführen, lautet die Ausgabe:

xyz
PL/SQL-Prozedur erfolgreich abgeschlossen.

Um alle Elemente aus dem PL SQL-Tabellentyp zu löschen, sehen Sie das folgende Beispiel:

emp_rec.delete;

4. Füllen von PL SQL-Tabellentypen mit Bulk Collect

Unten ist der Tabellentyp im Oracle-PL-SQL-Beispiel, um die Daten aus der emp-Tabelle abzurufen, und dann wird der PL-SQL-Tabellentyp mit Bulk Collect gefüllt und dann die emp-Tabelle mit FORALL aktualisiert. Hier ist das Beispiel:

set serveroutput on;

DECLARE
   CURSOR c
   IS
      SELECT * FROM emp;

   TYPE any_table_type IS TABLE OF emp%ROWTYPE
                             INDEX BY BINARY_INTEGER;

   emp_rec   any_table_type;
BEGIN
   OPEN c;

   FETCH c
   BULK COLLECT INTO emp_rec;

   CLOSE c;

   FORALL i IN emp_rec.FIRST .. emp_rec.LAST
      UPDATE emp
         SET comm = emp_rec (i).sal * 10 / 100
       WHERE empno = emp_rec (i).empno;

   COMMIT;
END;

Sie können auch mein PL SQL Procedure Tool überprüfen, um das Skript für Ihre Entwicklung zu generieren.