especialmente uno que no tiene los 256 caracteres máx./Línea y 1000000 caracteres máximos/limitación del búfer.Oracle: ¿algún reemplazo para el paquete DBMS_OUTPUT?
Respuesta
Tal vez una de estas opciones se adapte a sus necesidades (dependiendo de si se escribe algo en el lado del servidor o cliente):
- UTL_FILE
- text_io
- AskTom post
(actualización por Mark Harrison) Fui con el paquete my-dbms-output en la publicación de AskTom. Una característica realmente agradable es que puede acceder a los resultados a través de una vista, de modo que es fácil mostrar el resultado en un programa de cliente. Lo renombré a un nombre más corto.
Puede usar el paquete TCP para escribir salida en un terminal o en un registrador de datos remoto. Muy útil para depurar el código del paquete que se ejecuta en tareas programadas.
Edición: He aquí un ejemplo de procedimiento:
procedure pDebug(str in varchar2)
-- output debugging message to display or tcp console
is
x number;
l number;
nPort number;
sAddress varchar2(5000);
begin
if c_bDebug = 1 then
if c_tcpbDebug = 1 then
if cSocket.remote_host is NULL then
nPort := strMetaDataValue('TCP-DEBUG-PORT');
sAddress := strMetaDataValue('TCP-DEBUG-ADDRESS');
dbms_output.put_line('tcp:port ' || nPort);
dbms_output.put_line('tcp:address ' || sAddress);
if length(sAddress) > 1 and nvl(nPort, 0) > 0 then
begin
dbms_output.put_line('tcp:open start ' ||to_char(SYSDATE, 'DD-MON-YYYY HH24:MI:SS'));
cSocket := utl_tcp.open_connection(sAddress, nPort); -- open connection
dbms_output.put_line('tcp:open ' || to_char(SYSDATE, 'DD-MON-YYYY HH24:MI:SS'));
c_tcpbDebug := 1;
exception
when others then
dbms_output.put_line(SQLERRM);
dbms_output.put_line('Cant open debug tcp session ' || SYSTIMESTAMp);
c_tcpbDebug := 0;
end;
else
c_tcpbDebug := 0;
end if;
end if;
if cSocket.remote_host is not NULL then
dbms_output.put_line('tcp:write');
x := utl_tcp.write_line(cSocket, to_char(SYSDATE, 'DD-MON-YYYY HH24:MI:SS') || ' ' || str);
x := utl_tcp.write_line(cSocket, utl_tcp.crlf);
end if;
end if;
-- this bit prints out the debug statement in 254 char bits
l := length(str);
x := 1;
while x <= l loop
dbms_output.put_line(substr(str,x,254));
x := x + 254;
end loop;
end if;
end pDebug;
¿Qué versión de Oracle? Ambas limitaciones se han relajado en las versiones recientes. 10.2 admite líneas de más de 255 caracteres (el nuevo límite es 32k) y elimina la limitación de tamaño de búfer máximo. Oracle 9.2 tenía 255 caracteres por línea/1 MB de límite total, pero Oracle ha desprotegido esa versión.
Otra opción, aunque probablemente no la mejor, es escribir en el registro de alertas.
sys.dbms_system.ksdwrt(2,to_char(sysdate)|| ' -- The message ');
INSERT es una alternativa fantástica. No solo obtiene la información de su proceso, sino que persiste para futuras referencias o análisis. Y los resultados se pueden recuperar, filtrar y procesar con un lenguaje muy común llamado SQL. Podría tener una columna con un valor predeterminado de sysdate para verificar el tiempo y el orden. Se puede colocar dentro de una transacción autónoma para evitar perder el registro debido a una reversión.
Una limitación de dbms_output es que la salida está disponible solo después de que la instrucción haya finalizado. Para realizar un seguimiento de los procesos de larga ejecución, uso dbms_pipe para enviar mensajes de estado. En el otro extremo de la tubería, puede ver a qué se dedica el proceso.
- 1. ¿Hay algún reemplazo innerHTML en SVG/XML?
- 2. ¿Existe algún reemplazo para PHPDocumentor que admita PHP 5.3?
- 3. Oracle REGEXP_REPLACE reemplazo mayúsculas una cadena
- 4. reemplazo Lua para el operador%
- 5. dbms_output desbordamiento de búfer de tamaño
- 6. Reemplazo GWT para java.net.URL
- 7. ¿Hay algún equivalente para paquetes (Oracle) en MySQL?
- 8. ¿Hay algún paquete todo en uno como XAMPP para Django?
- 9. ¿Hay algún paquete para mapeo relacional de objetos en R?
- 10. ¿hay algún paquete de prueba de unidad bueno para Excel
- 11. ¿Hay algún paquete de Java para manejar las URLs construidas?
- 12. Turbogears 2 vs Django: algún consejo para elegir el reemplazo de Turbogears 1?
- 13. ¿Hay algún reemplazo de doble largo en java?
- 14. ¿Hay algún reemplazo de WinDBG con una mejor GUI?
- 15. ¿Reemplazo para SimpleCursorAdapter?
- 16. Reemplazo para Serialización XML
- 17. Estrategias para el reemplazo de objetos sistémicos
- 18. ¿Reemplazo para interruptor grande?
- 19. ¿Hay un reemplazo para mdbtools?
- 20. Reemplazo para PEAR: MDB2 en PHP 5.3
- 21. UTI exportada para paquete/paquete
- 22. ¿Hay algún paquete de seguridad listo para producción basado en Spring-Security para Java?
- 23. Reemplazo de rendimiento para String en Java
- 24. Estrategia para administrar paquetes Oracle sin romper el código
- 25. Camera.Parameters.FLASH_MODE_TORCH reemplazo para Android 2.1
- 26. Reemplazo recomendado para call_user_method obsoleto?
- 27. Reemplazo más rápido para Regex
- 28. ¿Lenguaje de reemplazo para C++?
- 29. GoogleDoc reemplazo para Excel = DATEDIF()?
- 30. Reemplazo de php para safe_mode
interesante, ¿tiene un ejemplo de esto? ¡Gracias! –