Ето един пример, който показва поведението, което виждате:
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.
документация казва "SQL*Plus извиква GET_LINES след издаване на SQL оператор или анонимни PL/SQL извиквания."
И процедурата GET_LINES казва „Тази процедура извлича масив от редове от буфера.“
С PUT все още не сте завършили линията си. И така не се отпечатва.
Процедурата NEW_LINE също споменава това:„Тази процедура поставя маркер за край на реда. Процедурата GET_LINE и процедурата GET_LINES връщат „редове“, разделени от „нови редове“. Всяко извикване на процедурата PUT_LINE или процедурата NEW_LINE генерира ред който се връща от GET_LINE(S)."
Поздрави,
Роб.