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.