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
sachant que je n'utilise aucune date dans ma requête le soucie dans l'execution de EXECUTE IMMIDIATEORA-01847: le jour du mois doit être compris entre 1 et le dernier jour du mois
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
Partager