sql >> Database >  >> RDS >> Oracle

Tabeltype in Oracle PL SQL Voorbeeld

PL SQL-tabeltypen zijn eigenlijk verzamelingen, zoals een array. Met behulp van PL SQL-verzamelingen kunt u bulkgegevens efficiënt verwerken. In dit bericht leer ik je de meest elementaire en meest gebruikte commando's voor PL SQL-tabeltypeverzamelingen. Hieronder staat het tabeltype in Oracle PL SQL-voorbeeld.

Eerst moet je het declareren in de declare-sectie van het PL SQL-blok. Hier is de syntaxis met voorbeeld:

Tabeltype in Oracle PL SQL-voorbeeld

1. Declareer PL SQL-tabeltypen

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

De bovenstaande commando's declareren het tabeltype any_table_type of emp table row type en initialiseren vervolgens met emp_rec. Na aangifte kunt u de waarden er handmatig aan toekennen. Hieronder is het voorbeeld:

2. Waarden toewijzen aan PL SQL-tabeltypen

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;

Omdat PL SQL-tabellen vergelijkbaar zijn met arrays, moeten de waarden worden toegewezen door het array-elementnummer op te geven, zoals hierboven weergegeven. Hieronder ziet u een voorbeeld van hoe u uit PL SQL-tabeltypeverzamelingen kunt verwijderen.

3. Elementen verwijderen uit PL SQL-tabeltypen

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;

In het bovenstaande voorbeeld wordt het eerste element verwijderd en wordt alleen het tweede afgedrukt. Wanneer u het bovenstaande blok uitvoert, is de uitvoer:

xyz
PL/SQL-procedure succesvol afgerond.

Om alle elementen van het PL SQL-tabeltype te verwijderen, volgt hieronder het voorbeeld:

emp_rec.delete;

4. PL SQL-tabeltypen vullen met Bulk Collect

Hieronder vindt u het tabeltype in Oracle PL SQL, bijvoorbeeld om de gegevens op te halen uit de werktijdtabel en vervolgens wordt het PL SQL-tabeltype gevuld met Bulk Collect en vervolgens wordt de werktijdtabel bijgewerkt met FORALL. Hier is het voorbeeld:

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;

U kunt ook mijn PL SQL Procedure Tool raadplegen om het script voor uw ontwikkeling te genereren.

  1. MySQL-fout 1170 (42000):BLOB/TEXT-kolom gebruikt in sleutelspecificatie zonder sleutellengte

  2. SSIS-zelfstudie voor beginners:waarom, wat en hoe?

  3. MySQL - UPDATE meerdere rijen met verschillende waarden in één query

  4. Vind alle zoekopdrachten die een bepaalde tabel gebruiken