Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Wird dbms_output.put() anders gepuffert als dbms_output.put_line()?

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.