sql >> Database teknologi >  >> RDS >> Oracle

Tabeltype i Oracle PL SQL-eksempel

PL SQL tabeltyper er faktisk samlinger, ligesom en matrix. Ved hjælp af PL SQL-samlinger kan du behandle bulkdata effektivt. I dette indlæg vil jeg lære dig meget grundlæggende og oftest brugte kommandoer til PL SQL tabel type samlinger. Nedenfor er tabeltypen i Oracle PL SQL eksempel.

Først skal du erklære det i deklareringsafsnittet i PL SQL-blokken. Her er syntaksen med eksempel:

Tabeltype i Oracle PL SQL-eksempel

1. Erklære PL SQL-tabeltyper

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

Ovenstående kommandoer vil erklære tabeltypen any_table_type af emp table row type og derefter initialisere med emp_rec. Efter erklæringen kan du manuelt tildele værdierne til den. Nedenfor er eksemplet:

2. Tildel værdier til PL SQL-tabeltyper

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;

Fordi PL SQL-tabeller er array-lignende, så værdierne bør tildeles ved at give array-elementnummer, som vist ovenfor. Nedenfor er eksemplet på, hvordan du sletter fra PL SQL-tabeltypesamlinger.

3. Sletning af elementer fra PL SQL-tabeltyper

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;

Ovenstående eksempel vil slette det første element og udskrive kun det andet. Når du vil udføre ovenstående blok, vil outputtet være:

xyz
PL/SQL-proceduren er gennemført.

For at slette alle elementer fra PL SQL-tabeltypen er eksemplet nedenfor:

emp_rec.delete;

4. Udfyldning af PL SQL-tabeltyper ved hjælp af Bulk Collect

Nedenfor er tabeltypen i oracle PL SQL eksemplet for at hente dataene fra emp-tabellen, og derefter vil den udfylde PL SQL-tabeltypen ved hjælp af Bulk Collect, og derefter opdatere emp-tabellen ved hjælp af FORALL. Her er eksemplet:

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;

Du kan også tjekke mit PL SQL Procedure Tool for at generere scriptet til din udvikling.

  1. Indsæt, hvis det ikke eksisterer Oracle

  2. Kan ikke ændre kolonne, der bruges i en fremmednøglebegrænsning

  3. Sammenligning af datoer gemt som varchar

  4. TRIM() Funktion i Oracle