Announcement

Collapse
No announcement yet.

Dynamische Anzahl an Werten für Parameter

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

  • miki86
    started a topic Dynamische Anzahl an Werten für Parameter

    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!.

  • jum
    replied
    Wie hast Du es denn gemacht, das hilft vielleicht anderen Nutzern?

    Leave a comment:


  • miki86
    replied
    Supper, hat geklappt!. Vielen Dank!

    Leave a comment:


  • dbwizard
    replied
    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

    Leave a comment:


  • jum
    replied
    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

    Leave a comment:

Working...
X