IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Procédural MySQL Discussion :

Impossible de créer une fonction MySql 4


Sujet :

SQL Procédural MySQL

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 32
    Par défaut Impossible de créer une fonction MySql 4
    Bonjour,
    je me sers d'une fonction utilisateur que j'ai trouvée sur des ressources MYSQL que voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    CREATE FUNCTION substrCount(x TEXT, delim varchar(100)) RETURNS int
    return (length(x) - length(REPLACE(x, delim, ''))) / length(delim);
    Lorsque je l'insère via phpmyadmin ou en ligne de commande, j'ai cette erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(x TEXT, delim varchar(100)) RETURNS int
    return (length(x) - length(REPLACE(x, ' at line 1
    Voici la version de mysql affichée par <? phpinfo(); ?> : 5.0.26

    Merci par avance de vos réponses.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Il me semble que phpmyadmin gère mal/ne sait pas gérer/est pénible avec les fonctions.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 32
    Par défaut
    j'ai essayé en ligne de commande mais j'ai le même problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    suse-server:/partages # mysql mabase <function-add.sql> output.tab
    ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(x TEXT, delim varchar(100)) returns int
    return (length(x)-length(REPLACE(x, del' at line 1
    Je suis sur Suse 10.2 avec le mysql 5.0.26 d'après <? phpinfo(); ?> mais d'après Yast, dans les packages installés, je suis sur mysql4

    Est-ce que cette fonction est compatible mysql4 ?

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 32
    Par défaut
    Personne ne sait ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 32
    Par défaut
    Il semblerait qu'il est impossible de créer des fonctions sur Mysql 4 ?

    Pouvez-vous me confirmer ça ?
    Merci

  6. #6
    Invité
    Invité(e)
    Par défaut
    Les procédures stockées ne sont disponibles qu'en version 5.

  7. #7
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Par défaut
    pour connaître la version exacte de MySQL, le mieux est encore de lui demander, en lui passant la requête suivante :

    select version();

    si c'est du 4, tu peux laisser tomber. Si c'est du 5, il faut utiliser le client texte avec la commande DELIMITER, afin de neutraliser le ;

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 32
    Par défaut
    Salut et merci beaucoup pour vos réponses.

    Effectivement, avec un select version(); il me renvoie à la version 4.1
    Donc je vais refaire tout ça en php
    C'est dommage, mon client ne peut pas utilis er mysql 5...

    Je n'ai pas trouvé de fonction mysql pour compter le nombre d'occurence d'une recherche dans un TEXT du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT COMPTE('toto', 'Je suis sur que toto est gentil') as occur FROM mabase;
    >> occur =  1


    Merci encore,
    @+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Impossible de créer une procédure stockée sur MySQL: 5.0.38
    Par donbrico dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 19/11/2008, 18h30
  2. Impossible de créer une table temporaire dans une fonction
    Par bossun dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 05/10/2007, 10h03
  3. Réponses: 6
    Dernier message: 10/08/2005, 11h36
  4. Réponses: 17
    Dernier message: 03/12/2004, 14h33
  5. Créer une fonction mathématique pendant l'exécution
    Par zeprogrameur dans le forum Langage
    Réponses: 5
    Dernier message: 09/07/2004, 11h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo