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 al crear un procedimiento almacenado al utilizar XAMPP.

Por favor, ayúdame, ¿qué está mal con mi consulta? ¿Por qué funciona bien en Navicat pero no en phpmyadmin de xampp?

Obtengo este error:

1064 – Tiene un error en su sintaxis SQL; consulte el manual que corresponde a su versión del servidor MariaDB para conocer la sintaxis correcta para usar cerca de ” en la línea 7

Por favor, ayúdame, puedes revisar la consulta a continuación:

CREATE DEFINER = `root`@`localhost` PROCEDURE `sp_view_laporan`(
    IN `varPName` VARCHAR(255),
    IN `varThn` INT(11),
    IN `varBln` INT(11)
)
BEGIN
    DECLARE status_pivot LONGTEXT;
    DECLARE kanwil VARCHAR(255);
    DECLARE sqlQuery LONGTEXT;

    SET status_pivot = (
        SELECT GROUP_CONCAT(
            DISTINCT CONCAT(
                'SUM(IF(status_id =',
                status_id,
                ', jml,0)) as ',
                LOWER(
                    REPLACE(nama_status, ' ', '_')
                )
            )
        )
        FROM (
            SELECT @thn := varThn thn, @bln := varBln bln
        ) parm,
        view_posisi_status
    );

    IF varPName IS NULL OR varPName = 0 THEN
        SET kanwil = 'WHERE 1 ';
    ELSE
        SET kanwil = CONCAT('WHERE parent_name LIKE "%', varPName, '%"');
    END IF;

    SET sqlQuery = CONCAT(
        'SELECT IFNULL(posisi_id,"TOTAL") posisi_id, parent_name, nama_posisi,',
        status_pivot,
        ' FROM (select @thn:', varThn, ' thn, @bln:', varBln, ' bln) parm, view_posisi_status,',
        kanwil,
        ' group by posisi_id WITH ROLLUP'
    );

    PREPARE stmt FROM sqlQuery;
    EXECUTE stmt;
    DEALLOCATE PREPARE stmt;
END;

Estoy bastante seguro de que no hay nada mal en mi código, pero xampp dice lo contrario.

ACTUALIZAR:

Probé la sugerencia dada por FanoFN pero aún obtengo el mismo mensaje:
https://www.db-fiddle.com/f/scvxtPrvbfcYzv3EepDyjw/1

ACTUALIZACIÓN 2:

Intenté acortar la consulta, funciona con Navicat, pero no con xampp.
https://www.db-fiddle.com/f/scvxtPrvbfcYzv3EepDyjw/2

Tags:  ,

Answer

  1. Avatar for davy.ai

    De acuerdo con el mensaje de error, parece que hay un error de sintaxis en la consulta SQL de la línea 7. El mensaje de error sugiere revisar el manual que corresponde a la versión del servidor MariaDB para conocer la sintaxis correcta a utilizar.

    Es posible que Navicat y phpmyadmin de xampp tengan diferentes configuraciones predeterminadas o versiones de MariaDB, lo que puede provocar diferencias en la interpretación de la consulta.

    También es importante tener en cuenta que la consulta incluye SQL dinámico, lo que implica construir y ejecutar una declaración SQL en tiempo de ejecución. Esto puede introducir una complejidad adicional y posibles errores que pueden no ser inmediatamente evidentes.

    Sin información más específica sobre la naturaleza del error de sintaxis, es difícil decir exactamente cuál es el problema. Sin embargo, algunos posibles pasos a intentar incluyen:

    • Asegurarse de que la versión del servidor MariaDB utilizada por Navicat y xampp sea la misma o al menos compatible.
    • Verificar que toda la sintaxis sea correcta y coincida con la versión de MariaDB utilizada.
    • Depurar la porción de SQL dinámico de la consulta para asegurarse de que la declaración finalmente construida sea válida y ejecutable.

Comments are closed.