Puntos clave de la corrección:
Se inicializa correctamente tiempoInicio con CLOCK_TIMESTAMP().
Se usa parametrosSeguimiento con la ortografía correcta.
Se asegura que table_tmp y tablaorigenDato coincidan en nombres de columnas.
Se usa dato AS id en la salida JSON para que coincida con la estructura esperada
Explicación de la función PL/pgSQL en PostgreSQL
La función esquema.funcion(usuario INTEGER) realiza las siguientes acciones:
- Registra la ejecución en un log
- Crea una tabla temporal para almacenar resultados
- Inserta datos desde una tabla origen (
esquema.tablaorigenDato) - Retorna los datos en formato JSON
- Actualiza el log con el tiempo de ejecución
1. Definición de la función
- Se define una función almacenada en PostgreSQL dentro del esquema
esquema. - Acepta un parámetro entero
usuario INTEGER. - Retorna una tabla con una columna
datade tipo JSON. - Usa PL/pgSQL como lenguaje.
2. Declaración de variables
funcionEjecutada: Guarda el nombre de la función en ejecución.parametrosSeguimiento: Almacena información del usuario que llamó la función.ultimoRegistro: Guarda ellog_idgenerado en el log.tiempoInicio: Captura el tiempo de inicio de la función conCLOCK_TIMESTAMP().
3. Inserción en la tabla de logs
- Inserta un registro en la tabla
"log".log, guardando:funcionEjecutada: Nombre de la función.parametrosSeguimiento: Información del usuario.datoEjecucion: Hora de inicio (tiempoInicio).usuario: ID del usuario.creacion: Fecha/hora actual (CURRENT_TIMESTAMP).
RETURNING log_id INTO ultimoRegistro: Obtiene el ID del log insertado.
4. Creación de la tabla temporal
- Se crea una tabla temporal
table_tmpcon dos columnas:dato: Un entero.indicacion: Un texto de hasta 250 caracteres.
ON COMMIT DROP: La tabla se elimina automáticamente al finalizar la transacción.
5. Inserción de datos en la tabla temporal
- Se copian datos desde
esquema.tablaorigenDatoatable_tmp, filtrando solo los registros activos (active = TRUE).
6. Retorno de los datos en formato JSON
- Se construye un JSON con
json_build_object:'msg': Mensaje"Consulta Exitosa".'success': Valor1(indicando éxito).'data': Se obtiene conjson_agg(row_to_json(c)), transformando los resultados en un array de objetos JSON.COALESCE(..., '[]'::JSON): Si no hay datos, devuelve un array vacío[].
Ejemplo de salida JSON:
7. Actualización del log con el tiempo de ejecución
- Se actualiza el registro del log con:
execution_end_date: Hora final de ejecución.updated_at: Última actualización del registro.execution_time: Tiempo de ejecución en milisegundos.
Resumen del flujo de la función
- Registra la ejecución en el log con la información del usuario.
- Crea una tabla temporal para almacenar datos.
- Obtiene datos desde
esquema.tablaorigenDatoy los guarda entable_tmp. - Convierte los datos en JSON y los retorna como resultado de la función.
- Actualiza el log con el tiempo total de ejecución.
Es una función útil para registrar consultas y mejorar el seguimiento de la ejecución en PostgreSQL.
