Mientras se ejecuta el código de activación por debajo se muestra usando ANT estoy consiguiendo el errorERROR: cita cadena sin terminar en o cerca de
org.postgresql.util.PSQLException: ERROR: unterminated quoted string at or near "' DECLARE timeout integer"
Position: 57
soy capaz de ejecutar con éxito el código de abajo a través PgAdmin (proporcionado por postgres) y la línea de comandos se añade utilidad "psql" y la función de disparo, pero mientras se ejecuta a través de ANT que falla cada
BEGIN TRANSACTION;
CREATE OR REPLACE FUNCTION sweeper() RETURNS trigger as '
DECLARE
timeout integer;
BEGIN
timeout = 30 * 24 * 60 * 60 ;
DELETE FROM diagnosticdata WHERE current_timestamp - teststarttime > (timeout * ''1 sec''::interval);
return NEW;
END;
' LANGUAGE 'plpgsql';
-- Trigger: sweep on diagnosticdata
CREATE TRIGGER sweep
AFTER INSERT
ON diagnosticdata
FOR EACH ROW
EXECUTE PROCEDURE sweeper();
END;
Si utiliza un archivo SQL con formato LiquiBase intente agregar este comentario a su proc/función fil e splitStatements: falso. Eso hizo el truco para mí. – Kuberchaun
hola, gracias por esta respuesta. me ayudó con un error similar. sin embargo, quería agregar que su solución alternativa (agregar las barras diagonales inversas) solo funciona en algunos casos. la división en declaraciones separadas se realiza mediante un nivel más alto que jdbc, por lo que exactamente lo que se toma como una línea y lo que no depende de otro software en la pila.en mi caso, utilizando la primavera, la barra diagonal inversa no funciona, pero fue posible especificar un separador diferente. –
@andrewcooke Por favor, ¿cómo se especifica un separador diferente para resolver el problema? –