Hier ist ein Beispiel, das das beobachtete Verhalten zeigt:
SQL> exec dbms_output.put_line('hello')
hello
PL/SQL procedure successfully completed.
SQL> exec dbms_output.put('hello again')
PL/SQL procedure successfully completed.
SQL> exec dbms_output.put(' and again')
PL/SQL procedure successfully completed.
SQL> exec dbms_output.new_line
hello again and again
PL/SQL procedure successfully completed.
Die Dokumentation sagt "SQL*Plus ruft GET_LINES auf, nachdem eine SQL-Anweisung oder anonyme PL/SQL-Aufrufe ausgegeben wurden."
Und Prozedur GET_LINES sagt "Diese Prozedur ruft ein Array von Zeilen aus dem Puffer ab."
Mit PUT haben Sie Ihre Linie noch nicht fertiggestellt. Und deshalb wird es nicht gedruckt.
Die NEW_LINE-Prozedur erwähnt dies ebenfalls:„Diese Prozedur setzt eine Zeilenende-Markierung. Die GET_LINE-Prozedur und die GET_LINES-Prozedur geben „Zeilen“ als durch „Zeilenumbrüche“ getrennt zurück. Jeder Aufruf der PUT_LINE-Prozedur oder der NEW_LINE-Prozedur erzeugt eine Zeile das von GET_LINE(S) zurückgegeben wird."
Viele Grüße,
Rob.