Oracle
 sql >> Database >  >> RDS >> Oracle

dbms_output.put() viene memorizzato nel buffer in modo diverso da dbms_output.put_line()?

Ecco un esempio che mostra il comportamento che stai vedendo:

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.

La documentazione dice "SQL*Plus chiama GET_LINES dopo aver emesso un'istruzione SQL o chiamate PL/SQL anonime."

E la procedura GET_LINES dice "Questa procedura recupera un array di righe dal buffer."

Con PUT non hai ancora completato la tua linea. E quindi non stampa.

La procedura NEW_LINE menziona anche questo:"Questa procedura inserisce un indicatore di fine riga. La procedura GET_LINE e la procedura GET_LINES restituiscono "righe" come delimitate da "nuove righe". Ogni chiamata alla procedura PUT_LINE o alla procedura NEW_LINE genera una riga che viene restituito da GET_LINE(S)."

Saluti,
Rob.