hello les gens,
J'ai une table A qui n'est crée que sous certaines conditions et qui n'existe pas au moment de la compilation d'une procédure stockée.
J'ai quand même besoin de définir un curseur qui parcourt cette table j'ai donc essayé d'utiliser de l'sql dynamique mais sans succés.
voici mon code:

Je souhaiterais une solution autre que de crée une table "permanente" ou "normale" qui ait la même structure et sur laquelle je déverserai le contenu de ma table A quand elle est crée pour ensuite la parcourir avec mon curseur.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
DECLARE
   TYPE r_cursor IS REF CURSOR;
 
   v_retour_trace   NUMBER;
   c_accnt          r_cursor;
 
   TYPE rec_accnt IS RECORD (
      affilie   VARCHAR2 (999),
      ld        VARCHAR2 (999),
      dat       TIMESTAMP ( 6 ),
      heure     TIMESTAMP ( 6 ),
      nfname    VARCHAR2 (999),
      jc        VARCHAR2 (999),
      obs       VARCHAR2 (999),
      sens      VARCHAR2 (999)
   );
 
   ar               rec_accnt;
BEGIN   
   EXECUTE IMMEDIATE    'OPEN c_accnt FOR '
                     || 'SELECT a.bp,a.bp, systimestamp, systimestamp, a.FILE_NAME, RECOVERY_DAY, a.REQUESTER, a.DIRECT '
                     || 'FROM tbl_tmp_accnt_cft a;';
 
   LOOP
      FETCH c_accnt
       INTO ar;
 
      EXIT WHEN c_accnt%NOTFOUND;
 
      BEGIN
         INSERT INTO tbl_accnt_cft
                     (seq, affilie, ld, dat,
                      heure, nfname, jc, obs, sens
                     )
              VALUES (seq_accnt_cft.NEXTVAL, ar.affilie, ar.ld, ar.dat,
                      ar.heure, ar.nfname, ar.jc, ar.obs, ar.sens
                     );'
      EXCEPTION
         WHEN OTHERS
         THEN
            NULL;
 
      END;
   END LOOP;
 
   CLOSE c_accnt;
END;
Je me prends un "ORA-00900: Instruction SQL non valide" à cause de mon "EXECUTE IMMEDIATE"
Merci pour toute vos contributions.