2011-05-30 14 views
9

Czy procedura PL/SQL może przyjmować zmienną liczbę argumentów?Zmienna liczba argumentów w procedurze przechowywanej PL/SQL

W moim przypadku procedura jest wywoływana przez przycisk przesyłania formularza, a formularz ma zmienną liczbę wejść.

+0

imo użyj wartości domyślnych lub stwórz kilka przeciążeń wywołujących procedurę podstawową. Umieść wszystkie typowe przetwarzanie w proccie podstawowym, który jest wywoływany przez wszystkie inne przeciążone proc. Przeciążone proc'y będą miały oczywiście dodatkowe przetwarzanie związane z tym wywołaniem. – tbone

Odpowiedz

9

Nie wspominając, ale są używasz mod_plsql?

Jeśli tak, powinieneś przeczytać o flexible parameter passing.

W skrócie, należy poprzedzić nazwę procedury wykrzyknikiem w przeglądarce i zdefiniować procedurę za pomocą atrybutu name i value_array.

+0

Szukałem elastycznego przekazywania parametrów, tak jak powiedziałeś, i znalazłem to: http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:19276873018565 Problem rozwiązany ! Bardzo dziękuję – Moltes

+0

Dzięki za akceptację. Tekst w mojej odpowiedzi jest również linkiem i uratowałby cię przed ponownym przeszukaniem :-) –

3

Sortuj. Możesz podać domyślne wartości parametrów procedury:

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

który można nazwać tak:

myproc(999); 

lub tak:

myproc (p_value_b => 11); 
+1

Wolałbym używać wartości NULL jako wartości domyślnej. Ale poza tym odpowiedź jest dobra. – Codo

+0

Myślałem o wartościach domyślnych, ale liczba argumentów może być bardzo duża. Procedura ze 100 argumentami z pustą wartością domyślną, dziwne, nie? – Moltes

+0

Nigdy nie widziałem procedury, która wymaga 100 argumentów. Jeśli masz 100 zmiennych formularza, musisz wykonać pewne przetwarzanie po stronie serwera przed wysłaniem go do bazy danych. – eaolson

Powiązane problemy