2011-05-30 3 views
9

Une procédure PL/SQL peut-elle prendre un nombre d'arguments variable? Dans mon cas, la procédure est appelée par le bouton de soumission d'un formulaire, et le formulaire a un nombre variable d'entrées.Nombre variable d'arguments dans la procédure stockée PL/SQL

+0

imo utilise des valeurs par défaut ou crée plusieurs surcharges appelant une procédure de base. Mettez tout votre traitement commun dans le proc de base qui est appelé par tous les autres procs surchargés. Les procs surchargés auront chacun un traitement supplémentaire particulier à cet appel bien sûr. – tbone

Répondre

9

Vous ne mentionnez pas, mais êtes vous utilisez mod_plsql? Si oui, vous devriez lire environ flexible parameter passing.

En bref, préfixez le nom de votre procédure avec un point d'exclamation dans votre navigateur et définissez votre procédure avec name_array et value_array.

+0

J'ai cherché un paramètre flexible en passant comme vous l'avez dit, et j'ai trouvé ceci: http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:19276873018565 Problème résolu ! Merci beaucoup – Moltes

+0

Merci d'avoir accepté. Le texte dans ma réponse est aussi un lien et cela vous aurait évité de chercher à nouveau vous-même :-) –

3

Trier par. Vous pouvez donner les valeurs par défaut des paramètres de procédure:

CREATE PROCEDURE myproc(p_value_a NUMBER DEFAULT 1, 
         p_value_b NUMBER DEFAULT 2) AS 
    ... 

que vous pourriez appeler comme ceci:

myproc(999); 

ou comme ceci:

myproc (p_value_b => 11); 
+1

Je préfère utiliser NULL comme valeur par défaut. Mais sinon, la réponse est bonne. – Codo

+0

J'ai réfléchi aux valeurs par défaut, mais le nombre d'arguments peut être très important. Une procédure avec 100 arguments avec une valeur par défaut nulle, étrange non? – Moltes

+0

Je n'ai jamais vu une procédure qui nécessite 100 arguments. Si vous avez 100 variables de formulaire, vous devez effectuer un traitement côté serveur avant de l'envoyer à votre base de données. – eaolson

Questions connexes