Oracle
 sql >> Base de données >  >> RDS >> Oracle

Type de table dans l'exemple Oracle PL SQL

Les types de table SQL PL sont en fait des collections, comme un tableau. Avec l'aide des collections PL SQL, vous pouvez traiter efficacement les données en masse. Dans cet article, je vais vous apprendre les commandes très basiques et les plus fréquemment utilisées pour les collections de type de table PL SQL. Vous trouverez ci-dessous le type de table dans l'exemple Oracle PL SQL.

Vous devez d'abord le déclarer dans la section declare du bloc PL SQL. Voici la syntaxe avec exemple :

Type de table dans l'exemple SQL Oracle PL

1. Déclarer les types de table SQL PL

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

Les commandes ci-dessus déclareront le type de table any_table_type de type de ligne de table emp, puis s'initialiseront avec emp_rec. Après déclaration, vous pouvez lui affecter manuellement les valeurs. Ci-dessous l'exemple :

2. Attribuer des valeurs aux types de table SQL PL

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;

Étant donné que les tables SQL PL ressemblent à des tableaux, les valeurs doivent être attribuées en donnant le numéro d'élément du tableau, comme indiqué ci-dessus. L'exemple ci-dessous montre comment supprimer des collections de type de table PL SQL.

3. Suppression d'éléments des types de table SQL PL

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;

L'exemple ci-dessus supprimera le premier élément et n'imprimera que le second. Lorsque vous exécuterez le bloc ci-dessus, la sortie sera :

xyz
Procédure PL/SQL terminée avec succès.

Pour supprimer tous les éléments du type de table PL SQL, voici l'exemple :

emp_rec.delete;

4. Remplir les types de table SQL PL à l'aide de la collecte en masse

Vous trouverez ci-dessous le type de table dans l'exemple Oracle PL SQL pour extraire les données de la table emp, puis il remplira le type de table PL SQL à l'aide de Bulk Collect, puis il mettra à jour la table emp à l'aide de FORALL. Voici l'exemple :

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;

Vous pouvez également consulter mon outil de procédure SQL PL pour générer le script pour votre développement.