sql >> Base de Datos >  >> RDS >> Oracle

¿Se está almacenando en búfer dbms_output.put() de manera diferente a dbms_output.put_line()?

Aquí hay un ejemplo que muestra el comportamiento que está viendo:

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 documentación dice "SQL*Plus llama a GET_LINES después de emitir una instrucción SQL o llamadas PL/SQL anónimas".

Y el procedimiento GET_LINES dice "Este procedimiento recupera una matriz de líneas del búfer".

Con PUT aún no has completado tu línea. Y entonces no se imprime.

El procedimiento NEW_LINE también menciona esto:"Este procedimiento coloca un marcador de fin de línea. El procedimiento GET_LINE y el procedimiento GET_LINES devuelven "líneas" delimitadas por "nuevas líneas". Cada llamada al procedimiento PUT_LINE o al procedimiento NEW_LINE genera una línea. que es devuelto por GET_LINE(S)."

Saludos,
Rob.