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.

Error de migración Flyway con DB2 11.1 SP que incluye DDL de XML puro.

Tengo un SP Db2 V11.1 bastante complejo que se compila e implanta manualmente, pero cuando agrego el SQL a un script de migración, obtengo este problema.

https://github.com/flyway/flyway/issues/2795

Dado que el SP se compila e implanta manualmente, estoy seguro de que el SQL del SP está bien.

¿Alguien tiene alguna idea de cuál podría ser el problema subyacente?

DB2 11.1
Flyway 6.4.1 (He probado las versiones 7.x con el mismo resultado)

El SP utiliza funciones XML puras, por lo que el SQL del SP incluye caracteres $ y @. He intentado utilizar caracteres obscuros como terminador de declaraciones (~ ^), pero una prueba simple con funciones XML puras y @ como terminador de declaraciones parecía funcionar.

--#SET TERMINATOR @

SET SCHEMA CORE
@
CREATE OR REPLACE PROCEDURE CORE.XML_QUERY
LANGUAGE SQL
BEGIN
    DECLARE GLOBAL TEMPORARY TABLE OPTIONAL_ELEMENT (
        LEG_SEG_ID BIGINT,
        OPTIONAL_ELEMENT_NUM INTEGER,
        OPTIONAL_ELEMENT_LIST VARCHAR(100),
        CLSEQ INTEGER
        ) ON COMMIT PRESERVE ROWS NOT LOGGED WITH REPLACE;

    insert into session.optional_element
    select distinct LEG_SEG_ID, A.OPTIONAL_ELEMENT_NUM, A.OPTIONAL_ELEMENT_LIST, A.CLSEQ
    from core.leg_seg , XMLTABLE('$d/LO/O' passing XMLPARSE(DOCUMENT(optional_element_xml)) as "d"
                             COLUMNS
                             OPTIONAL_ELEMENT_NUM INTEGER PATH '@Num',
                             OPTIONAL_ELEMENT_LIST VARCHAR(100) PATH 'text()',
                             CLSEQ INTEGER PATH '@Seq') AS A
    WHERE  iv_id = 6497222690 and optional_element_xml is not null;
END
@
Tags:  ,

Answer

  1. Avatar for davy.ai

    Un posible problema podría estar relacionado con la forma en que Flyway interpreta el script SQL con funciones XML y los caracteres especiales ($, @) utilizados en el script. Podría valer la pena probar diferentes caracteres de terminación de declaración o ajustar el script para evitar esos caracteres especiales, ya que la prueba con @ como terminador de declaración pareció funcionar. También puede ser útil verificar cualquier error de sintaxis o problemas de compatibilidad entre la versión de DB2 y Flyway que se está utilizando.

Comments are closed.