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 :

erreur dans une fonction MySQL


Sujet :

SQL Procédural MySQL

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 51
    Points : 39
    Points
    39
    Par défaut erreur dans une fonction MySQL
    Bonjours,

    J'ai besoin d'une fonction mais celle si ne marche pas étant un débutant sous MySQL j'aurais voulu savoir si vous voyez l'erreur. Je pense que j'ai mal déclaré le curseur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    CREATE FUNCTION retourneSource(idDoc VARCHAR(32))
    RETURNS @retour TABLE ( site CHAR(255) null, nombre INTEGER null )
    AS
    BEGIN
     
    	DECLARE @temp TABLE (site CHAR(255), nombre INTEGER)
     
    	DECLARE curseur CURSOR FOR 
    		select site, count(site)
    		from (
    				select id_doc, substring(url from (instr(url, '//')+2) for instr(substring(url from (instr(url, '//')+2)), '/')-1)  as site
    				from source
    				where url <> ''
    				   limit 1000000
    			 ) tempTable
    		where id_doc like idDoc
    		group by site
    		order by 2 desc
     
    	OPEN curseur 
    	DECLARE @site char(255) 
    	DECLARE @nombre integer 
     
    	FETCH NEXT FROM curseur INTO @site, @nombre
    	WHILE (@@FETCH_STATUS = 0) 
    	BEGIN 
    		INSERT INTO @temp VALUES ( @site, @nombre ) 
    		FETCH NEXT FROM curseur INTO @site, @nombre
    	END
     
    	CLOSE curseur 
    	DEALLOCATE curseur 
     
    	INSERT INTO @reponse
    	SELECT * FROM @temp
     
    	RETURN 
    END
    Il me dit qu'il y a un erreur a la deuxième ligne au niveau du "RETURNS @retour" mais je vois vraiment pas pourquoi.

    Cordialement.

  2. #2
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    salut,

    normal:
    • tu ne peux préciser ici que le type retourné
    • tu veux retourner une table c'est pas un type valide


    @temp... c'est une variable globale pas besoin de déclare ou alors vire le @ pour en faire une variable dans le contexte de la fonction

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 51
    Points : 39
    Points
    39
    Par défaut
    Bonjour,

    J'avais vu sur internet qu'une personne avait retourne une table avec deux champs. Une chaine de caractère a la quelle est associé un integer.
    Je cherche a associe une url a un nombre de fois au celle ci a été entré.
    Après si il n'est pas possible de retourner une table je ne sais pas comment faire.

    Cordialement.

  4. #4
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    pas sur mysql, d'autres sgbdr le permettent mais pas lui...

    tu ne peux retourner que des types scalaires (nombres, booléens, chaine de caractères)

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 51
    Points : 39
    Points
    39
    Par défaut
    D'accord ba tempi alors.

    Merci quand même.

    Cordialement.

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

Discussions similaires

  1. erreur dans une fonction
    Par nicerico dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 11/10/2006, 11h02
  2. Trouver l'erreur dans une fonction
    Par Seth77 dans le forum Langage
    Réponses: 4
    Dernier message: 28/06/2006, 16h38
  3. [débutant] erreur dans une fonction
    Par Skizo dans le forum Access
    Réponses: 7
    Dernier message: 18/05/2006, 10h46
  4. Erreur dans une fonction
    Par dark_vidor dans le forum Langage
    Réponses: 6
    Dernier message: 15/01/2006, 10h23
  5. Réponses: 2
    Dernier message: 11/08/2004, 15h01

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