sql >> Databasteknik >  >> RDS >> Oracle

Tabelltyp i Oracle PL SQL Exempel

PL SQL-tabelltyper är faktiskt samlingar, som en array. Med hjälp av PL SQL-samlingar kan du bearbeta bulkdata effektivt. I det här inlägget kommer jag att lära dig mycket grundläggande och mest använda kommandon för PL SQL-tabelltypsamlingar. Nedan är tabelltypen i Oracle PL SQL-exempel.

Först måste du deklarera det i deklarationsavsnittet i PL SQL-blocket. Här är syntaxen med exempel:

Tabelltyp i Oracle PL SQL-exempel

1. Deklarera PL SQL-tabelltyper

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

Ovanstående kommandon kommer att deklarera tabelltypen any_table_type av emp table radtyp och initieras sedan med emp_rec. Efter deklaration kan du tilldela värdena manuellt till den. Nedan är exemplet:

2. Tilldela värden till PL SQL-tabelltyper

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;

Eftersom PL SQL-tabeller är arrayliknande, så bör värdena tilldelas genom att ange arrayelementnummer, som visas ovan. Nedan följer ett exempel på hur du tar bort från PL SQL-tabelltypsamlingar.

3. Ta bort element från PL SQL-tabelltyper

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;

Ovanstående exempel tar bort det första elementet och skriver bara ut det andra. När du kör blocket ovan kommer utdata att vara:

xyz
PL/SQL-proceduren har slutförts.

För att ta bort alla element från PL SQL-tabelltyp, nedan är exemplet:

emp_rec.delete;

4. Fylla i PL SQL-tabelltyper med Bulk Collect

Nedan är tabelltypen i oracle PL SQL exempel för att hämta data från emp-tabellen och sedan fyller den i PL SQL-tabelltypen med Bulk Collect och uppdaterar sedan emp-tabellen med FORALL. Här är exemplet:

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 också kontrollera mitt PL SQL Procedure Tool för att generera skriptet för din utveckling.

  1. INTE IN vs INTE FINNS

  2. Hur man hittar dubbletter av värden i en SQL-tabell

  3. SQL Server Standard Edition High Availability Futures

  4. Grunderna för att hantera datafiler i SQL Server