PL/SQL: seltsames Problem bei Abbruchbedingungen

  • Hallo!

    Kann mir jemand von euch sagen, was an dieser Syntax falsch ist?

    Code
    WHILE (cur > 9) LOOP
        DBMS_OUTPUT.PUT_LINE('Test ');
        cur := cur - MOD(cur, 10);
        cur := cur/10; 
        DBMS_OUTPUT.PUT_LINE('Test ' || sum1 || ' t ' || cur);
    END LOOP;



    Ursprünglich hatte ich nämlich statt > 9 >10 dort stehen, und damit hat es funktioniert. Bloß war da ein Denkfehler drinnen, und ich brauch > 9. Bei >= 10 kommt das selbe Ergebnis wie bei > 9 : die Prozedur hängt sich auf, und zwar noch vor der allerersten Anweisung. Und sie hängt sich so auf, dass das SQL-Fenster steht.
    Hier der gesamte Code:



    Nicht einmal die erste (fett markierte Ausgabe) wird ausgeführt!
    Und ich habe keinen Plan wieso, da es mit der Anweisung >10 perfekt funktioniert (nur halt nicht so wie es sein sollte...)

    Hat jemand eine Ahnung?
    Ich tippe ja darauf, dass er irgendwas falsch hineinkompiliert...aber keine Ahnung was das sein soll.

    Lg.
    java-girl

    There's no better place than 127.0.0.1!

  • Das erste Codestück ist in Ordnung, für's zweite bin ich zu faul. Hast du "SET SERVEROUTPUT ON;" ausgeführt? Wenn nein, dann gibt DBMS_OUTPUT.PUT_LINE nämlich nix aus.

    Ich hab folgende Prozedur erstellt:


    Und das lässt sich wunderbar ausführen:

    (Oracle Database 11g Release 11.1.0.6.0)

  • Das erste Codestück ist in Ordnung, für's zweite bin ich zu faul. Hast du &quot;SET SERVEROUTPUT ON;&quot; ausgeführt? Wenn nein, dann gibt DBMS_OUTPUT.PUT_LINE nämlich nix aus.</p>

    Klar, ich bin doch nicht dämlich.Ausserdem habe ich ja bereits erwähnt dass genau das selbe Programm mit > 10 geht und mit > 9 nicht.


    EDIT: Zwar etwas verspätet aber doch: das Problem lag doch wo anders, und etwas, was ich vorher leider nicht gewusst habe ist das SQL-Plus zuerst die Befehler an den Server sendet, der Server diese dann ausführt und erst am Ende selbiger die Ausgabe zurücksendet. Ich war in einer Endlosschleife verfangen, deswegen keine Ausgabe und der Hänger.
    Trotzdem noch mal danke!

    There's no better place than 127.0.0.1!

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!