Announcement

Collapse
No announcement yet.

Dynamische Anzahl an Werten für Parameter

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Dynamische Anzahl an Werten für Parameter

    Hallo, weiss jemand wie ich eine komma separierte Liste erstelle im Prozeduraufruf erstelle wobeu nur 1 Parameter in der Prozedur definiert ist.. Beispielsweise:

    Habe eine Procedur mit Parameter:
    CREATE PROCEDURE gib_name (name varchar2 )
    IS
    BEGIN
    .............
    ............
    END

    Beim Aufruf der Prozedur möchte ich mehrere von den Parametern angeben, also kommasepariert,welches dan zu den namen bestimmte IDs in eine temporäre tabelle reinschreibt, beispielswise:

    EXECUTE gib_name ('torsten', 'matthias', 'tobi' ) /*<----so ist es aber nicht möglich*/

    Wie würde das gehen wenn ich in dem Aufruf der Prozedur dann mehrere Argumente reinschreibe, die aber vom selben Typ des parameters sind?.

    Bin euch sehr dankbar für Ideen!.

  • #2
    Vielleicht nicht ganz, was Du suchst, denn echt variable Parameterzahlen sind m.E. nicht möglich. Man kann dieselbe Prozedur mit unterschiedlichen Parametern implementieren (überladen) oder einen Listentyp als Parameter wählen:
    Code:
    CREATE OR REPLACE PROCEDURE gib_name (NamList sys.odciVarchar2List)
    IS
    BEGIN
      FOR i IN NamList.First .. NamList.Last
      LOOP
        dbms_output.put_line(' Namlist('||i||')='||NamList(i));
      END LOOP;
    END;
    
    SHOW ERRORS
    
    SET SERVEROUTPUT ON SIZE 900000;
    
    EXEC gib_name(sys.odciVarchar2List('torsten', 'matthias', 'tobi')); 
    
     Namlist(1)=torsten
     Namlist(2)=matthias
     Namlist(3)=tobi

    Comment


    • #3
      Korrekt, würde auch eine Collection verwenden. Alternativ übergeben wir komplexe Parameterkonstruktionen auch via einem XML File, je nach Fall kann dies eine gute Lösung sein

      Gruss

      Comment


      • #4
        Supper, hat geklappt!. Vielen Dank!

        Comment


        • #5
          Wie hast Du es denn gemacht, das hilft vielleicht anderen Nutzern?

          Comment

          Working...
          X