es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

depuración de psql – procedimiento de sesión

Estoy tratando de modificar un procedimiento de sesiones existente para agregar el recuento de ciclos. El error que estoy obteniendo es el siguiente:
Error de SQL [42601]: ERROR: error de sintaxis en o cerca de “END”
Posición: 3587

--llamar a transactions.packs.tep.session()

CREATE OR REPLACE PROCEDURE transactions.packs.tep.session()
 LANGUAGE plpgsql
AS $procedure$
DECLARE
    session "transactions.packs"."simple.sessions";
    "sessionToSearch" TEXT;
    "endTimeStamp" TIMESTAMP WITH TIME ZONE;
    "energy" NUMERIC;
    "charge" NUMERIC;
    "duration" NUMERIC;
    "cycleCount" NUMERIC;
    "f" RECORD;
BEGIN
    "cycleCount" = '0';
    -- sentencia para reiniciar la sesión
    FOR session IN SELECT * FROM "transactions.packs"."simple.sessions" WHERE "sessionDuration" IS NULL
    LOOP
        BEGIN
            IF session."sessionType" = 0 THEN
                "sessionToSearch" := 'Carga';
            ELSIF session."sessionType" = 1 THEN
                "sessionToSearch" := 'Descarga';
            END IF;

        -- Cuenta del ciclo de sesión: Inicio
        EXECUTE FORMAT(
        'FOR f IN select (current' || '%s' || '), "timestamp" 
        FROM "transactions_packs"."basic_measurements_packs" a order by a."timestamp" desc
        LOOP 
        BEGIN
        IF  AVG((current' || '%s' || '))  
        OVER (ORDER BY "f"."timestamp" ROWS BETWEEN 3 PRECEDING AND CURRENT ROW) > 0.01
        then cycleCount  = cycleCount  + 1;   
        END IF;
        END
        END LOOP;','%s',"sessionToSearch","sessionToSearch")
        -- obtener el valor de la sentencia IF y ELSE para buscar registros en las columnas de carga y descarga
        -- Cuenta del ciclo de sesión: Fin    
END ;       
END LOOP;

end;
$procedure$
;

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que el error en el código está relacionado con un problema en la sintaxis del procedimiento. Específicamente, el error menciona un problema cerca de la palabra clave “END”. Esto podría estar relacionado con un delimitador faltante o mal ubicado en el código.

    Sin más contexto o conocimiento del esquema de datos, es difícil brindar una orientación más específica. Sin embargo, una posible solución podría ser revisar cuidadosamente el código y asegurarse de que todas las palabras clave y delimitadores estén colocados y utilizados correctamente. Además, podrían utilizarse herramientas y técnicas de depuración para identificar la fuente específica del error de sintaxis.

Comments are closed.