Announcement

Collapse
No announcement yet.

Mehrfeldriges array in PL/SQL

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

  • Mehrfeldriges array in PL/SQL

    Hallo,

    kann ich in PL/SQL ein Mehrfeldriges Array nach dem Schema

    type aSchleifen_ID is varray(22, 22) of number(10);
    (so funktionierts natürlich net, sonst würd ich ja net schreiben;-) )

    generieren, bzw. gibts sowas?


    danke
    christoph

  • #2
    Hallo Christoph,

    Arrays im engeren Sinne kennt PL/SQL nicht. Ein VARRAY ist ein Container, ein Tabellentyp, der nicht wieder einen anderen Container enthalten kann.
    Ein mehrdimensionales Array ist mit normalen Bordmitteln von Oracle nicht möglich. Evtl. ist die Nachbildung der Funktionalität über entsprechende Objekte möglich - da müßte man etwas genauer drüber Nachdenken und der Nutzen müßte den Aufwand lohnen Was kann man mit einem mehrdimensionalen Array, was man nicht auch mit einer relationalen Beziehung machen kann?

    Gruß Falk
    Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

    Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

    Comment


    • #3
      Hallo Falk,

      erstmal vielen Dank für die Antwort...

      Man könnte mit mehrdimensionalen Arrays (zumindest in meiner beschränkten Welt;-) ) m.E. von Cursors gelieferte Datenmengen etwas einfacher Zuordnen, gegenüberstellen und auswerten;-)


      gruß
      christoph

      Comment


      • #4
        Mehrdimensionale Arrays

        Hallo Alfons,

        vielleicht ist es ja ganz einfach das, was Du suchst?

        Code:
        DECLARE
            Type TAB1 is Table of number(10) index by pls_integer;
            Type TAB2 is Table of TAB1       index by pls_integer;
            t    TAB2;
            Procedure show(s varchar2) is Begin dbms_output.put_line(s); End show;
        BEGIN
            for i in 1 .. 3 loop
                for j in 1 .. 3 loop
                    t(i)(j) := i*j;
                end loop;
            end loop;
            for i in t.first .. t.last loop
                for j in t(i).first .. t(i).last loop
                    show( 't(' || i || ')(' || j || ') = ' || t(i)(j) );
                end loop;
            end loop;
        END;
        /
        
        t(1)(1) = 1
        t(1)(2) = 2
        t(1)(3) = 3
        t(2)(1) = 2
        t(2)(2) = 4
        t(2)(3) = 6
        t(3)(1) = 3
        t(3)(2) = 6
        t(3)(3) = 9
        Siegfried

        Comment


        • #5
          Hallo Siegfried,

          ok du hast recht Oracle hat mit 9i das Handling für Index-By-Tabellen stark überarbeitet und etliche Limitierungen entfernt - Vielleicht sollte ich mich doch langsam von meiner 8i als Testplattform trennen

          Gruß Falk
          Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

          Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

          Comment

          Working...
          X