Announcement

Collapse
No announcement yet.

Variablen (Spalten) eines Cursors über Schleife auslesen

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

  • Variablen (Spalten) eines Cursors über Schleife auslesen

    Hallo

    Ich habe folgendes Problem:

    Hier meine Prozedur stark vereinfacht:

    declare
    var_test ARRAY_N := ARRAY_N();
    CURSOR test_cur
    IS
    (SELECT test1, test2, test3 from tbl_test);
    begin
    FOR test_rec IN test_cur LOOP
    for i in 1..3 loop
    var_test.extend;
    var_test(1) := test_rec.test || i;
    end loop;
    end loop;
    end;

    Es funktioniert alles tadellos bis auf die Zuweisung var_test(1):= test_rec.test || i;

    Würde ich schreiben var_test(1):=test_rec.test1; hätte ich kein Problem.

    Gibt es eine Möglichkeit die Spalte (Variable) eines Cursors über eine Schleife auszulesen (mit akueller Schleifendurchlaufnummer i). Bei mir sind mehrere Cursorspalten bis auf die abschließende Nummer gleich benannt, darum die Anforderung.

    Danke für Eure Hilfe

  • #2
    Hi

    Schau Dir mal "name_in()" an. dass sollte Dir in Deinem Fall weiterhelfen.

    -> [highlight=sql]var_test(1) := name_in(test_rec.test || i);[/highlight]
    Zuletzt editiert von emetiel; 28.04.2010, 09:37.

    Comment


    • #3
      @chrisfe: Formatierung von SQL in Beiträgen
      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


      • #4
        Ich hätte den Quellcode formatiert. Jedoch wurden die Einrückungen schon bei der Vorsschau wieder entfernt!

        Comment


        • #5
          [CODE]declare
          var_test ARRAY_N := ARRAY_N();
          CURSOR test_cur
          IS
          (SELECT test1, test2, test3 from tbl_test);
          begin
          FOR test_rec IN test_cur LOOP
          for i in 1..3 loop
          var_test.extend;
          var_test(1) := test_rec.test || i;
          end loop;
          end loop;
          end;[CODE]

          Hier bitte nocheinmal mit Code einfügen

          Comment


          • #6
            Ich habe nur eine einzelne PL/SQL Prozedur (kein Package usw.)

            die Funktion in_name() funktioniert nicht!
            Meldung: identifier 'IN_NAME' must be declared

            Ich glaube folgendes sollte funktionieren:

            Code:
            execute immediate 'begin var_test(' ||i|| ') := test_rec.test' ||i||';end;';
            Die Variable var_test in obigen Statement nicht sichtbar.

            Kann mir jemand weiterhelfen?

            Comment


            • #7
              Originally posted by chrisfe View Post
              Ich hätte den Quellcode formatiert. Jedoch wurden die Einrückungen schon bei der Vorsschau wieder entfernt!
              Du hast "Formatierung von SQL in Beiträgen" nicht gelesen! Oder?
              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