Bonsoir à tous,
Oracle9i Release 9.2.0.1.0 - Production
PL/SQL Release 9.2.0.1.0 - Production
Je viens de constater un bug avec l'instruction CASE
Exemple 1 :
Exemple 1 qui fonctionne :
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 UPDATE TL_TEST SET RESU_REPONSE=(CASE FLACO_ID WHEN 'A' THEN --C'est à ce niveau, que je vais tester les différents cas (CASE ETIQ_REPLIQUE WHEN 1 THEN NULL WHEN 2 THEN 1 ELSE NULL END) --Fin zone de test WHEN 'B' THEN (CASE ETIQ_REPLIQUE WHEN 1 THEN 1 WHEN 2 THEN 2 ELSE NULL END) ELSE NULL END)
WHEN 1 THEN NULL
WHEN 2 THEN 1
ELSE NULL END
Exemple 2 :
Exemple 2 : ORA-00938: Nombre d'arguments insuffisant pour la fonction
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 UPDATE TL_TEST SET RESU_REPONSE=(CASE FLACO_ID WHEN 'A' THEN (CASE ETIQ_REPLIQUE --LES VALEURS SONT A NULLS WHEN 1 THEN NULL WHEN 2 THEN NULL ELSE NULL END) --fin zone de test WHEN 'B' THEN (CASE ETIQ_REPLIQUE WHEN 1 THEN 1 WHEN 2 THEN 2 ELSE NULL END) ELSE NULL END)
Bizarre non ????
Vous allez surement me dire que mon exemple 2 est complétement loufoque car dans tous les cas j'affecte la valeur NULL est qu'un CASE est complétement inutile !
je suis tout à fait d'accord, simplement le pb que je souléve intervient dans une fonction stockée qui me permet de générer des instructions CASE dynamiques et qui fonctionne parfaitement hormis dans ce cas que je présente ci-dessus (et que j'ai bien entendu simplifié pour décrire le pb)
y-a t-il une possibilité de contourner le pb en gardant le CASE dans l'état ?
merci de votre aide
@
Partager