RFZ: Oracle PL/SQL und variable Anzahl an Eingabefeldern auf Website

Hallo,
ich bin noch Einsteiger in PL/SQL und suche eine Möglichkeit ein Webformular mit einer variablen Anzahl an Eingabefeldern von einer PL/SQL Funktion verarbeiten zu lassen.

In PHP würde ich die Eingabefelder mit Namen wie title[0], title[1], ... benennen und so ein Array übergeben, was ich mit $_POST['title'] auswerten kann.

In PL/SQL definiere ich Prozeduren, deren Parameter direkt die Namen der HTML Formularfelder sind. Wie kann ich dort entweder mehrere Eingabefelder in einen Parameter der Prozedur packen, oder eine Prozedur mit beliebiger Anzahl an Eingabefelder machen?

http://articles.techrepublic.com.com/5100-10878_11-5726322.html beschreibt zwar, wie man einen Parameter so definieren kann, dass er eine beliebige Anzahl an Elementen fassen kann, aber soweit ich das verstehe, ist das nur für die Verwendung beim Aufruf einer Prozedur von einer Anderen gedacht. Wie ich eine derartige Variable über ein HTML-Formular definieren könnte, weiß ich nicht.

Gibt es eine Möglichkeit, eine variable Anzahl an Eingabefeldern mit PL/SQL zu verarbeiten, oder muss ich das Problem anders angehen?

greetz,
RFZ

  1. Hallo,

    du könntest mit PHP komma-separierte Strings erstellen (also dein Array als String serialisieren) und dann in der Oracle Prozedur wieder auseinandernehmen.

    Oder du könntest selbiges auch mit XML (PHP generiert ein gültigen "Chunk" an XML) machen, wenn dein Oracle mit XML arbeiten kann.

    Beide Optionen kosten natürlich auch etwas Komplexität und Performance.

    Gruss, Frank

    1. du könntest mit PHP komma-separierte Strings erstellen (also dein Array als String serialisieren) und dann in der Oracle Prozedur wieder auseinandernehmen.

      Hmm, nein. Ich habe kein PHP oder eine andere serverseitige Sprache zur Verfügung. Das HTML Formular wird direkt von der PL/SQL Prozedur verarbeitet (ich kenne mich mit dem Server nicht genau aus, aber eine aufgerufene URL mapped immer direkt auf eine PL/SQL Prozedur, und die HTTP Parameter werden immer direkt als Parameter der Prozedur übergeben).

      Ich könnte höchstens mittels JavaScript die Werte der Eingabefelder in einen String zusammen packen und diesen dann der Prozedur übergeben. Aber das möchte ich verständlicherweise nicht tun ;)

  2. Ich habe gerade folgendes festgestellt:

    Definiere ich eine Prozedur wie folgt:
    PROCEDURE test ( data IN varchar2 DEFAULT NULL );
    und rufe sie via /package.test?data=1&data=2&data=3&dummy=4 auf, erhalte ich eine Fehlermeldung (wegen des nicht definierten Parameters "dummy") in welcher mir alle drei data-Parameter angezeigt werden:

    PARAMETERS :
      ===========
      DATA:
       1
       2
       3
      DUMMY:
       4

    Jetzt müsste ich eigentlich nur noch wissen, wie der Parameter "data" in meinem Fall innerhalb der Prozedur definiert sein muss, damit ich auf alle diese Elemente zugreifen kann. Verfügbar sind sie ja offensichtlich...

    greetz,
    RFZ