Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

O dbms_output.put() está sendo armazenado em buffer diferente do dbms_output.put_line()?


Aqui está um exemplo que mostra o comportamento que você está vendo:
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.

A documentação diz "SQL*Plus chama GET_LINES após emitir uma instrução SQL ou chamadas PL/SQL anônimas."

E o procedimento GET_LINES diz "Este procedimento recupera uma matriz de linhas do buffer".

Com PUT você ainda não completou sua linha. E assim não imprime.

O procedimento NEW_LINE também menciona isso:"Este procedimento coloca um marcador de fim de linha. O procedimento GET_LINE e o procedimento GET_LINES retornam "linhas" delimitadas por "novas linhas". Cada chamada ao procedimento PUT_LINE ou procedimento NEW_LINE gera uma linha que é retornado por GET_LINE(S)."

Atenciosamente,
Rob.