Partage
  • Partager sur Facebook
  • Partager sur Twitter

Erreur fonction SQL

    20 avril 2021 à 15:54:47

    Bonjour à tous,

    Pour une raison inconnue j'ai une erreur là dessus

    DELIMITER $$
    CREATE FUNCTION test()
    RETURNS integer
    BEGIN
        DECLARE nb_livres integer;
        SELECT count(emprunt.id_livre) INTO nb_livres FROM emprunt where emprunt.date_retour is null;
        RETURN nb_livres ;
    END$$
    DELIMITER ;

    Intitulé de l'erreur : SQL Error [1064] [42000]: (conn=47) You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'END$$' at line 1

    Si quelqu'un à la solution il m'aiderait beaucoup, merci :)

    Je suis sous Linux, et j'utilise dbeaver

    EDIT Benzouye : Mise en forme SQL.

    -
    Edité par Benzouye 20 avril 2021 à 16:44:29

    • Partager sur Facebook
    • Partager sur Twitter
      20 avril 2021 à 16:49:00

      Bonjour,

      Si je passe outre le fait que c'est complètement absurde de créer une fonction pour faire cela, l'erreur est en effet étrange ... la syntaxe est correcte en tout cas ...

      Je partirai peut-être sur un caractère foireux issu d'un copier/coller malencontreux ...

      Essaye simplement de retaper entièrement le code de la fonction (sans copier/coller), ou au moins de supprimer et retaper tous les espaces et retour à la ligne.

      -
      Edité par Benzouye 20 avril 2021 à 16:50:42

      • Partager sur Facebook
      • Partager sur Twitter
      Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
        20 avril 2021 à 18:18:48

        Bonjour,

        J'ai créé cette fonction pour apprendre, je sais que je peux faire ça bien plus simplement :)

        Je n'ai pas copié/collé la fonction.

        Je vais regarder un peu les espaces, merci !

        • Partager sur Facebook
        • Partager sur Twitter
          21 avril 2021 à 12:36:16

          Pour information, testé ce jour sur MySQL 8, je n'ai aucune erreur de syntaxe et la fonction fonctionne ...

          • Partager sur Facebook
          • Partager sur Twitter
          Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
            21 avril 2021 à 13:24:30

            Ma bdd est peut-être pétée ou la syntaxe de dbeaver est pas la même ce qui est super bizarre.

            Vais regarder ma version de mysql

            -
            Edité par Gabagool 21 avril 2021 à 13:34:11

            • Partager sur Facebook
            • Partager sur Twitter
              21 avril 2021 à 13:45:21

              Essaye ça :

              DELIMITER $$
              CREATE FUNCTION test()
              RETURNS integer
              BEGIN
              	DECLARE nb_livres integer;
              	SELECT count(emprunt.id_livre) INTO nb_livres FROM emprunt where emprunt.date_retour is null;
              	RETURN nb_livres;
              END$$
              DELIMITER ;

              J'ai simplement supprimé et resaisi tous les espaces et retour chariot, et supprimé l'espace avant le ; du RETURN.

              • Partager sur Facebook
              • Partager sur Twitter
              Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
                21 avril 2021 à 18:50:25

                Marche po, toujours le même code erreur.

                Possible que ce soit parce-que je suis sur Maria DB?

                • Partager sur Facebook
                • Partager sur Twitter
                  21 avril 2021 à 19:33:56

                  Non, rien ne diffère ici entre mysql et mariadb.

                  Et je viens de tester sur mariadb sans problème...

                  Je ne comprends pas...

                  Une piste, dans PHPMYADMIN il y a une zone dans la fenêtre d'exécution SQL pour y préciser le délimiteur (il ne faut pas le mettre dans la requête), peut-être que dans dbeaver aussi ?

                  • Partager sur Facebook
                  • Partager sur Twitter
                  Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
                    21 avril 2021 à 19:45:56

                    Quand je vire le délimiteur, j'ai l'erreur suivante : SQL Error [1064] [42000]: (conn=46) You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 4

                    Je vais essayer un autre outil de bdd

                    Edit:

                    Sur Datagrip ça marche bien également.

                    Je vais me pencher sur dbeaver, j'ai du faire une fausse manip.

                    Merci pour ton aide :)

                    -
                    Edité par Gabagool 21 avril 2021 à 20:12:40

                    • Partager sur Facebook
                    • Partager sur Twitter
                      21 avril 2021 à 21:52:59

                      • Partager sur Facebook
                      • Partager sur Twitter
                      Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL

                      Erreur fonction SQL

                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                      • Editeur
                      • Markdown