Announcement

Collapse
No announcement yet.

Sequence deklarieren

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

  • Sequence deklarieren

    Hallo zusammen,

    ich habe folgendes Problem:
    Mittels einer PL/SQL-Programmierung importiere ich einen Datensatz in eine Tabelle. Das erste Feld dieser Tabelle wird durch eine Sequence gefüllt.
    Die Daten werden per Cursor in Variablen geschrieben, die vorher deklariert wurden.

    Im Output-Teil verbinde ich die Felder per concat.
    Nun möchte ich natürlich auch den Wert der Sequence sehen.
    Diesen kann ich aber nicht sehen, da ich die Sequence nicht deklariert habe.
    Somit kann ich den Wert über DBMS_OUTPUT.PUT_LINE nicht anzeigen lassen.

    Meine Frage lautet nun: Wie deklariere ich eine Sequence?

    Vielen Dank im voraus

    RH

  • #2
    Hallo Rainer,
    von welchem DBMS sprichst du denn? Denn die Erstellung einer Sequenz läuft ja nicht immer gleich ab.
    Gruß,
    Matze

    Comment


    • #3
      Sequence deklarieren

      Oracle 8.17

      Comment


      • #4
        Originally posted by Reiner Hoffmann View Post
        Hallo zusammen,

        ich habe folgendes Problem:
        Mittels einer PL/SQL-Programmierung importiere ich einen Datensatz in eine Tabelle. Das erste Feld dieser Tabelle wird durch eine Sequence gefüllt.
        Die Daten werden per Cursor in Variablen geschrieben, die vorher deklariert wurden.

        Im Output-Teil verbinde ich die Felder per concat.
        Nun möchte ich natürlich auch den Wert der Sequence sehen.
        Diesen kann ich aber nicht sehen, da ich die Sequence nicht deklariert habe.
        Somit kann ich den Wert über DBMS_OUTPUT.PUT_LINE nicht anzeigen lassen.

        Meine Frage lautet nun: Wie deklariere ich eine Sequence?

        Vielen Dank im voraus

        RH
        Hallo RH,

        was genau meinst du mit "Wie deklariere ich eine Sequence?"? Bekommst du mglws. beim Ausführen einen "ORA-08002: Sequenz in dieser Session noch nicht definiert"?
        Bevor du den aktuellen Wert einer Sequenz mit CURRVAL() abrufen kannst, muß diese in der aktuellen Sitzung (mindestens) einmal mit NEXTVAL() aufgerufen worden sein.
        Den aktuellen Wert einer Sequenz abzufragen um herauszubekommen welcher Wert in den (gedachten) letzen DS geschrieben wurde, ist nicht mehrbenutzerfähig und birgt ein hohes Fehlerpotenzial! Mglws. wurde ja bereits (durch einen anderen Nutzer) ein neuer DS in die Tabelle eingefügt, dann hat CURRVAL() nichts mehr mit dem Wert zu tun, der in deinem gerade behandelten DS steht.

        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


        • #5
          Hallo Falk,

          ich denke, daß ich die Lösung soeben gefunden habe:
          Im Deklarationsteil habe ich die Variable var_11 deklariert
          und diese folgendermaßen gefüllt:

          select SEQ_LFD_NUMMER.nextval into var_11 from dual.

          Im Bereich DBMS_OUTPUT.PUT_LINE kann ich diese dann aufrufen.
          Ich weiß nicht ob das die eleganteste Lösung ist aber sie funktioniert.

          Vielden Dank RH

          Comment


          • #6
            Originally posted by Reiner Hoffmann View Post
            ...Ich weiß nicht ob das die eleganteste Lösung ist aber sie funktioniert. ...
            Hallo Reiner,

            das ist die beste Lösung! Jeder Versuch, den Wert wieder aus der Sequenz auszulesen ist von vornherein fehlerträchtig! Wie ich schon sagte, kann ja zwischen dem Aufruf von sequ.NEXTVAL() und sequ.CURRVAL() die Sequenz in einer anderen Sitzung ebenfalls abgerufen werden und dann sind die beiden Werte nicht mehr identisch!
            Die Abfrage der Sequenz mit NEXTVAL() und zwischenspeichern des Ergebnisses in einer Variablen zur weiteren Verwendung ist die "eleganteste Lösung".

            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