Bonjour,
Je debute en PL/SQL et je me suis basée sur les Tutoriaux de Developpez.com pour ma procedure (tuto très bien faits d'ailleurs, milles mercis aux auteurs !)
Je travaille sous Oracle 10g et j'utilise PL/SQL Developper 7 pour la mise en place de mes procédures.
Mon probleme est le suivant :
Dans la clause WHERE de ma procédure, le champ V de la table TB_LF n'est pas toujours renseigné. Je voudrais donc qu'il ne soit testé dans la clause que s'il existe, sinon il ne faudrait pas en tenir compte (en rouge dans la procedure jointe plus bas). Mon SQL ne fonctionne pas ...
Je pensais peut etre qu'en passant par des IF ca serait possible, mais je n'ai pas l'impression que ca soit possible d'en mettre dans le WHERE.
Si vous aviez des idées ou des pistes que je puisse explorer, je vous en serais reconnaissante. Je ne connais pas trop les possibilités du PL/SQL en fait ...![]()
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
48
49
50
51
52
53 create or replace procedure BO_UP is UPCLE TB_UP.CLE%TYPE; UPL TB_LL.L%TYPE; UPV TB_LL.V%TYPE; UPD TB_LL.D%TYPE; UPF TB_LL.F%TYPE; UPC TB_LL.C%TYPE; Cursor C_UP is SELECT TB_UP.CLE, TB_LL.L, TB_LL.V, TB_LL.D, TB_LL.F, TB_LL.C FROM TB_UP, TB_LCUP, TB_LC, TB_LL WHERE (TB_UP.CLE = TB_LCUP.CLE_TB_UP) AND (TB_LCUP.CLE_TB_LC = TB_LC.CLE) AND (TB_LC.LL = TB_LL.CLE); begin /* récupération des UP */ Open C_UP; Loop -- boucle sur les UP begin Fetch C_UP into UPCLE, UPL, UPV, UPD, UPF, UPC; -- lecture d'une ligne UPDATE ARMDBA.BO_LF -- mise à jour de la table BO_LF SET IDUP = UPCLE WHERE (BO_LF.L = UPL) AND ((BO_LF.V = UPV) AND (BO_LF.V is not null)) AND ((BO_LF.D BETWEEN UPD AND UPF)) AND (BO_LF.O = UPC); Exit when C_UP%NOTFOUND; EXCEPTION /* gestion des exceptions */ When OTHERS then dbms_output.put_line( 'Code erreur : ' || to_char( SQLCODE )) ; dbms_output.put_line( 'libellé erreur : ' || to_char( SQLERRM )) ; end; End Loop; Close C_UP; end BO_UP;
Partager