Bonjour A tous ,
je ne suis pas un expert sql je trouve des soucis a exécuter une procédure compilé sans erreurs

mais lors de l’exécution un message bizarre apparaît
ORA-01847: le jour du mois doit être compris entre 1 et le dernier jour du mois
sachant que je n'utilise aucune date dans ma requête le soucie dans l'execution de EXECUTE IMMIDIATE

voila le code de ma procédure
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
create or replace PROCEDURE      donnee_obl2 is    
BEGIN
    DECLARE
        CURSOR c IS  select cli, tcli FROM bkcli;
 
    BEGIN --2
--Traitement bkcli 
        FOR eng IN c LOOP --1
            DECLARE
                xvaleur      NUMBER;
                x_requete    VARCHAR2(2000);
                wexist_cli   NUMBER;
                wresultat    NUMBER;
                wtcli varchar2(3);
                wzone varchar2(100);
                wcli varchar2(20);
 
                CURSOR cvaldef_cli IS SELECT zone zone1, iden FROM valdef_bkcli WHERE TRIM(tcli) = TRIM(eng.tcli) AND obl = 'O' AND action = 'T' ORDER BY zone;
 
            BEGIN --3
 
 
                FOR eng1 IN cvaldef_cli LOOP --2
                wzone:=eng1.zone1;
                wcli:=eng.cli ;
       x_requete:='select count(*) from bkcli where cli = '''|| wcli ||''' and (' || trim(wzone)|| ' is null or  ' || trim(wzone) || ' = '' '')';
       EXECUTE IMMEDIATE x_requete into wresultat ;
       commit; 
       INSERT INTO requete VALUES ( wresultat );
        COMMIT;
IF wresultat = 1 THEN
SELECT COUNT(*) INTO wexist_cli FROM reporting_valdef WHERE cli = ENG.cli;
IF wexist_cli = 0 THEN
INSERT INTO reporting_valdef VALUES (ENG.cli,ENG1.zone1,1 );
COMMIT;
ELSE
UPDATE reporting_valdef  SET non_saisie = non_saisie||';'||eng1.zone1,nbre_non = nbre_non + 1;
COMMIT;END IF;
END IF;
END LOOP; --2
END;--3
end loop;
---update *valdef_bkcli set valeur = null ; commit ; END LOOP;--1
END;--2
---------------
 
end ;

l'erreur apparait sur la ligne execute immidiate

merci pour votre aide ,

cdt,
mrabet