Paramètres dynamiques PS Oracle

Résolu/Fermé
infoxx Messages postés 31 Date d'inscription vendredi 26 avril 2013 Statut Membre Dernière intervention 24 mai 2013 - Modifié par infoxx le 16/05/2013 à 14:20
infoxx Messages postés 31 Date d'inscription vendredi 26 avril 2013 Statut Membre Dernière intervention 24 mai 2013 - 21 mai 2013 à 13:19
Bonjour à tous!
Alors voilà mon problème:
Je travail actuellement sur une appli HTML/PHP qui fait appel à des Procédures Stockées sous Oracle pour envoyer le résultat de certaines requêtes.
Le problème est que pour certaines requêtes, certains paramètres sont facultatifs (ex : si l'utilisateur veut saisir un nom, il peut, sinon la PS recherche pour tous les noms de la base). Jusqu'ici je m'en sortais car un seul paramètre était facultatif, j'avais donc 2 PS (une qui fonctionnait sans le paramètre, et une qui fonctionnait avec) qui étaient appelées en fonction de la valeur du champ facultatif (je traitais l'appel en fonction de cette condition en php).
Mais là, ma fonction a 4 paramètres facultatifs (et 2 obligatoires), donc je ne peux pas faire une PS pour chaque cas, car dans ce cas, je devrais en faire 24, ce qui serait vraiment très moche et stupide..
Ducoup, je voudrais savoir si il était possible de faire un truc du style :
si tel paramètre est non nul, alors je vérifie telle condition, sinon je vérifie telle autre condition dans ma PS
Ou si vous avez d'autres idées permettant de résoudre mon problème ...
Merci d'avance et bonne journée! :)
A voir également:

1 réponse

infoxx Messages postés 31 Date d'inscription vendredi 26 avril 2013 Statut Membre Dernière intervention 24 mai 2013
21 mai 2013 à 13:19
Bon alors voilà, j'ai trouvé une solution qui permet de faire ce que je veux, je la poste au cas où quelqu'un se poserait la même question que moi:
Il suffit d'ajouter dans la procédure stockée ce bout de code (pour chaque param facultatif)

and decode(le_param_facultatif, null, 1, la_valeur_à_laquelle_le_param_doit_etre_égal_si_il_est_renseigné) = nvl(le_param_facultatif, 1)


voilà!
0