Oracle
 sql >> Base de données >  >> RDS >> Oracle

Est-ce que dbms_output.put() est mis en mémoire tampon différemment de dbms_output.put_line() ?

Voici un exemple qui illustre le comportement que vous constatez :

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 documentation dit "SQL*Plus appelle GET_LINES après avoir émis une instruction SQL ou des appels PL/SQL anonymes."

Et la procédure GET_LINES dit "Cette procédure récupère un tableau de lignes du tampon."

Avec PUT, vous n'avez pas encore terminé votre ligne. Et donc ça ne s'imprime pas.

La procédure NEW_LINE le mentionne également :"Cette procédure place un marqueur de fin de ligne. La procédure GET_LINE et la procédure GET_LINES renvoient des "lignes" délimitées par des "nouvelles lignes". Chaque appel à la procédure PUT_LINE ou à la procédure NEW_LINE génère une ligne. renvoyé par GET_LINE(S)."

Cordialement,
Rob.