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 :

Function : pb retour résultat


Sujet :

SQL Procédural MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    LHT
    LHT est déconnecté
    Membre averti
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 26
    Par défaut Function : pb retour résultat
    Bonjour, j'ai un souci dans le retour du résultat de ma fonction.
    Voici le code de ma fonction. Celle-ci à en paramètre d'entrée une chaîne de caractère et retourne en sortie la position du séparateur trouvé.
    Lorsque j'éxecute les premières lignes en mode requête. pas de problèmes.
    Le Select me renvoi bien les bon résultat.
    J'ai l'impression que c'est mon curseur qui plante.

    Merci d'avance à ceux qui pourront dénicher l'erreur.
    Bonne journée à tous.

    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
     
    BEGIN
            DECLARE pos,posMax INT;
    	DECLARE c_pos CURSOR FOR
    		SELECT MIN(pos),MAX(pos) FROM posi WHERE pos>0;
     
    	SET pos = 0;
     
    	DROP TEMPORARY TABLE IF EXISTS posi;	
    	CREATE TEMPORARY TABLE posi (pos INT); 
    	INSERT INTO posi(pos) vALUES(INSTR(nom,''''));
    	INSERT INTO posi(pos) VALUES(INSTR(nom,' '));
    	INSERT INTO posi(pos) VALUES(INSTR(nom,'-'));
     
    	OPEN c_pos;
    	FETCH c_pos INTO pos,posMax;
    	CLOSE c_pos; 
     
    	If posMax = 0 THEN SET pos = posMax; END IF;
     
    	RETURN pos;
    END

  2. #2
    LHT
    LHT est déconnecté
    Membre averti
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 26
    Par défaut
    c'est bon j'ai trouvé. C'est juste un problème de déclaration de variable.
    Ma variable pos interagissait avec le champ pos de la table temporaire.

  3. #3
    Membre Expert Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Par défaut
    Cependant, quel est l'interet de votre curseur dans votre script ?

  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
    Billets dans le blog
    1
    Par défaut
    salut,

    oui je me pose aussi la question vu que tu lis une seule ligne... autan faire un simple:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT MIN(pos),MAX(pos) INTO pos,posMax FROM posi WHERE pos>0;

    plus optimisé...

  5. #5
    LHT
    LHT est déconnecté
    Membre averti
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 26
    Par défaut
    oui j'ai pensé à rectifier mon légèrement mon code.
    j'ai cette requête qui me retourne la position minimale en dehors des 0
    et j'ai une seconde requête (max sans condition >0) qui me retourne la position maximale.
    Si la position maximale est 0 alors je n'ai aucun des éléments recherché.

    Pourquoi j'ai mis le curseur ? tout simplement que je suis pas très doué en mySQL et que je n'arrive pas à affecter le résultat à ma variable pour la renvoyer.(mySQL5.0)
    J'ai toujours un message d'erreur me disant que je n'ai pas la bonne syntaxe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SET maVariable = SELECT blabla FROM truc
    Donc si vous avez un peu plus d'expérience, je suis partant !

    Merci à vous !

  6. #6
    Membre Expert Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Par défaut
    Parce que comme vous l'analyseur, votre syntaxe est incorrecte !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    SELECT MaColone INTO MaVariable FROM MaTable
    Je vous conseille de regarder quelques docs sur MySql

    Bon Courage

  7. #7
    LHT
    LHT est déconnecté
    Membre averti
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 26
    Par défaut
    merci à vous, j'étais entrain de lire la syntaxe sur la doc mysql. et oui, l'analyseur chez moi est un peu ko
    un grand merci à vous ! et moi je vais prendre un peu plus de temps pour creuser ces procédures stockées et la syntaxe sous mysql.(genre passage de paramètre in/out, passage de paramètre dans un curseur, etc.)

  8. #8
    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
    Billets dans le blog
    1
    Par défaut
    pour faire simple:

    select into ne dois te retourner qu'une ligne...
    le curseur servira lui quand tu en auras possiblement plusieurs et tu devras faire une boucle de lecture...

    souvent, si tu as un traitement lourd ou très répétitif, vaut mieux une procédure stockée que de faire un select avec une fonction utilisateur (udf) dedans... en plus tu pourras faire plus de choses dedans...

    bon courage

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

Discussions similaires

  1. Jumeler 2 function pour 1 résultat
    Par learningcode dans le forum Langage
    Réponses: 2
    Dernier message: 23/03/2015, 17h59
  2. [AJAX] Modal de retour résultat
    Par Pelote2012 dans le forum jQuery
    Réponses: 1
    Dernier message: 01/02/2013, 14h11
  3. Appel d'une page et retour résultat sur cette page
    Par baggie dans le forum Langage
    Réponses: 19
    Dernier message: 16/11/2009, 14h49
  4. [T-SQL] résultat d'ne requête en retour de proc
    Par Deedoo2000 dans le forum Adaptive Server Enterprise
    Réponses: 2
    Dernier message: 11/10/2006, 09h40
  5. [Système] retour de résultats par une fonction
    Par maximenet dans le forum Langage
    Réponses: 7
    Dernier message: 18/09/2006, 21h32

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