SVL_UDF_LOG
Registra los mensajes de error y advertencia definidos por el sistema que se generan durante la ejecución de la función definida por el usuario (UDF).
SVL_UDF_LOG es visible para todos los usuarios. Los superusuarios pueden ver todas las filas; los usuarios normales solo pueden ver sus datos. Para obtener más información, consulte Visibilidad de datos en las tablas y vistas de sistema.
Algunos o todos los datos de esta tabla también están en la vista de monitoreo SYS SYS_UDF_LOG. Los datos de la vista de monitoreo SYS están formateados para que sean más fáciles de usar y entender. Se recomienda utilizar la vista de monitoreo SYS para las consultas.
Columnas de la tabla
Nombre de la columna | Tipo de datos | Descripción |
---|---|---|
consulta | bigint | El ID de la consulta. Puede usar este ID para combinar distintas vistas y tablas del sistema. |
message | char (4096) | El mensaje generado por la función. |
created | Marca de tiempo | La hora en que se creó el registro. |
traceback | char (4096) | Si está disponible, este valor brinda una pista de stack para la UDF. Para obtener más información, visite traceback |
funcname | character (256) | El nombre de la UDF en ejecución. |
node | integer | El nodo donde se generó el mensaje. |
slice | integer | El sector donde se generó el mensaje. |
seq | integer | La secuencia del mensaje en el sector. |
Consultas de ejemplo
En el siguiente ejemplo, se muestra cómo las UDF administran los errores definidos por el sistema. El primer bloque muestra la definición para una función UDF que devuelve la inversa de un argumento. Cuando ejecuta la función y proporciona un argumento 0, como se muestra en el segundo bloque, la función devuelve un error. La tercera instrucción lee el mensaje de error que se registra en SVL_UDF_LOG
-- Create a function to find the inverse of a number CREATE OR REPLACE FUNCTION f_udf_inv(a int) RETURNS float IMMUTABLE AS $$ return 1/a $$ LANGUAGE plpythonu; -- Run the function with a 0 argument to create an error Select f_udf_inv(0) from sales; -- Query SVL_UDF_LOG to view the message Select query, created, message::varchar from svl_udf_log; query | created | message -------+----------------------------+--------------------------------------------------------- 2211 | 2015-08-22 00:11:12.04819 | ZeroDivisionError: long division or modulo by zero\nNone
En el siguiente ejemplo, se agrega el registro y un mensaje de advertencia a la UDF para que una operación de división en cero dé como resultado un mensaje de advertencia, en lugar de parar con un mensaje de error.
-- Create a function to find the inverse of a number and log a warning CREATE OR REPLACE FUNCTION f_udf_inv_log(a int) RETURNS float IMMUTABLE AS $$ import logging logger = logging.getLogger() #get root logger if a==0: logger.warning('You attempted to divide by zero.\nReturning zero instead of error.\n') return 0 else: return 1/a $$ LANGUAGE plpythonu;
En el siguiente ejemplo, se ejecuta la función y, luego se consulta SVL_UDF_LOG para ver el mensaje.
-- Run the function with a 0 argument to trigger the warning Select f_udf_inv_log(0) from sales; -- Query SVL_UDF_LOG to view the message Select query, created, message::varchar from svl_udf_log; query | created | message ------+----------------------------+---------------------------------- 0 | 2015-08-22 00:11:12.04819 | You attempted to divide by zero. Returning zero instead of error.