Précédent   Forum des professionnels en informatique > Bases de données > MySQL > SQL Procédural
SQL Procédural Forum d'entraide sur les triggers, les procédures stockées et les fonctions en MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/03/2007, 12h14   #1
Candidat au titre de Membre du Club
 
Inscription : novembre 2004
Messages : 32
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 32
Points : 10
Points : 10
Envoyer un message via MSN à tynmar
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 :
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 :
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.
tynmar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/03/2007, 14h10   #2
Inactif
 
Inscription : mars 2002
Messages : 1 295
Détails du profil
Informations personnelles :
Âge : 41

Informations forums :
Inscription : mars 2002
Messages : 1 295
Points : 1 345
Points : 1 345
Il me semble que phpmyadmin gère mal/ne sait pas gérer/est pénible avec les fonctions.
Florian est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/03/2007, 15h39   #3
Candidat au titre de Membre du Club
 
Inscription : novembre 2004
Messages : 32
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 32
Points : 10
Points : 10
Envoyer un message via MSN à tynmar
j'ai essayé en ligne de commande mais j'ai le même problème :

Code :
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 ?
tynmar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2007, 09h38   #4
Candidat au titre de Membre du Club
 
Inscription : novembre 2004
Messages : 32
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 32
Points : 10
Points : 10
Envoyer un message via MSN à tynmar
Personne ne sait ?
tynmar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2007, 16h59   #5
Candidat au titre de Membre du Club
 
Inscription : novembre 2004
Messages : 32
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 32
Points : 10
Points : 10
Envoyer un message via MSN à tynmar
Il semblerait qu'il est impossible de créer des fonctions sur Mysql 4 ?

Pouvez-vous me confirmer ça ?
Merci
tynmar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2007, 17h47   #6
Inactif
 
Inscription : mars 2002
Messages : 1 295
Détails du profil
Informations personnelles :
Âge : 41

Informations forums :
Inscription : mars 2002
Messages : 1 295
Points : 1 345
Points : 1 345
Les procédures stockées ne sont disponibles qu'en version 5.
Florian est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/03/2007, 09h25   #7
Rédacteur/Modérateur

 
Avatar de Antoun
 
Homme Antoine Dinimant
Consultant en Business Intelligence
Inscription : octobre 2006
Messages : 5 854
Détails du profil
Informations personnelles :
Nom : Homme Antoine Dinimant
Âge : 42
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : octobre 2006
Messages : 5 854
Points : 9 540
Points : 9 540
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 ;
__________________
Antoun
Expert SQL, BO, Essbase

La bible d'Essbase est parue !
Antoun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/03/2007, 10h12   #8
Candidat au titre de Membre du Club
 
Inscription : novembre 2004
Messages : 32
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 32
Points : 10
Points : 10
Envoyer un message via MSN à tynmar
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 :
1
2
SELECT COMPTE('toto', 'Je suis sur que toto est gentil') AS occur FROM mabase;
>> occur =  1


Merci encore,
@+
tynmar est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h12.


 
 
 
 
Partenaires

Hébergement Web