Bonjour,

J'essaie d'utiliser les fonctions 'for' et 'loop' afin d'effectuer un comptage d'occurrences de tables avant et après nettoyage de celles-ci.

J'utilise le script suivant avec la table qui s'appelle 'cpt_purge' et les champs qui s'appellent 'nomtable' (assez explicite) et 'nbenrav' (nombre d'enregistrements avant) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
declare
  t_nbrenr number;
 
begin
  for coltab in (select nomtable from cpt_purge order by nomtable)
  loop
    select count(*) into t_nbrenr from coltab;
    update cpt_purge set nbenrav=t_nbrenr where nomtable=coltab;
  end loop;
end;
/
Il y a une erreur sur le nom de la table:

Error report:
ORA-06550: Ligne 7, colonne 40 :
PL/SQL: ORA-00942: Table ou vue inexistante
ORA-06550: Ligne 7, colonne 5 :
PL/SQL: SQL Statement ignored
ORA-06550: Ligne 8, colonne 62 :
PLS-00382: expression du mauvais type
06550. 00000 - "line %s, column %s:\n%s"
*Cause: Usually a PL/SQL compilation error.
*Action:
Je n'arrive pas à voir ce qui gêne, et je ne sais pas comment indiquer le nom de la table dans la clause 'where' de l''update'.

Des collègues m'ont émis l'idée d'utiliser la clause 'EXECUTE IMMEDIATE' que j'ai rajouté devant l'update, mais sans résultat.

Merci pour votre aide.
Cordialement,

Olivier