[SQL] : instruction CASE buggé ?
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 :
Code:
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) |
Exemple 1 qui fonctionne :
WHEN 1 THEN NULL
WHEN 2 THEN 1
ELSE NULL END
Exemple 2 :
Code:
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) |
Exemple 2 : ORA-00938: Nombre d'arguments insuffisant pour la fonction
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
@