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 :

Aide à création d'une procédure


Sujet :

SQL Procédural MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 21
    Par défaut Aide à création d'une procédure
    Bonjour

    Voici mon problème

    Dans une table t1 j'ai un champ texte appelé DIV

    Afin de l'utiliser comme comparateur dans l'UPDATE d'une autre table, il me faut changer la valeur de ce champ sachant que :

    si champ = RFRV alors champ doit être égal à RFRM
    si champ = RFRM alors champ doit être égal à RFRV
    si champ autre alors champ = champ

    j'ai essayé de créer une fonction à l'aide de MySql Query Brother

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    DELIMITER $$
     
    DROP PROCEDURE IF EXISTS `suivi_transfert_retour`.`versusdiv` $$
    CREATE PROCEDURE `suivi_transfert_retour`.`versusdiv`(TOTO)
     
    BEGIN
    SELECT CASE TOTO
      WHEN 'rfrv' THEN 'rfrm'
      WHEN 'rfrm' THEN 'rfrv' ELSE `TOTO`
    END
    END $$
     
    DELIMITER ;
    qui me renvoie une erreur de syntaxe 1064 "...to use near ')
    BEGIN
    SELECT CASE TOTO
    WHEN 'rfrv' THEN 'rfrm'
    WHEN 'rfrm' THEN 'rfr at line 1

    C'est ma première création de fonction et je suis un peu perdu.

    Quelqu'un peut il m'aider ?

    Merci d'avance

    Précision : j'ai ouvert tous les droits sur la base

  2. #2
    Membre Expert

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Par défaut
    Bonjour,

    Je pense que de cette forme ça sera mieux.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    DELIMITER $$
     
    DROP PROCEDURE IF EXISTS `suivi_transfert_retour`.`versusdiv` $$
    CREATE PROCEDURE `suivi_transfert_retour`.`versusdiv`(TOTO VARCHAR)
     
    BEGIN
    SELECT CASE TOTO
      WHEN 'rfrv' THEN 'rfrm'
      WHEN 'rfrm' THEN 'rfrv'
      ELSE `TOTO`
    END;
    END $$
     
    DELIMITER ;
    Peut être avec un code réel il serait plus simple de t'aider.

  3. #3
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 21
    Par défaut suite
    en fait je suis en train de migrer une appli que j'ai développée en Visual Basic et Access.
    aujourd'hui je conserve mon support Visual Basic comme interface, mais je me sert de MySql comme BDD.

    dans mon traitement, je mets à jour une table, (tbl_suivi), à partir d'une autre table, (tbl_me80fn), dans lesquelles j'ai un champ commun "Division".

    le hic est que dans l'une tbl_me80fn, lorsque mon champ contient rfrv en fait dans l'autre mon champ contient rfrm et inversement (pb d'extraction d'un ERP)

    je procède donc en préalable de la mise à jour de tbl_suivi, où j'ai une jointure des deux tables sur l'égalité du champ division,à l'inversion de la valeur des champs dans tbl_me80fn avec en SQL VB:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "UPDATE tbl_me80fn set Division = versusdiv([Div])"
    versusdiv étant une fonction VB

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public sub versusdiv(div)
     
    select case div
    case "rfrv"
    versusdiv="rfrm"
    case "rfrm" 
    versusdiv = "rfrv"
    case else
    versusdiv = div
    end select
     
    end sub
    tu vois que il n'y a rien de vraiment compliqué dans mon histoire

    je vais essayer ta solution demain au bureau et te dirais quoi

    en tout cas merci de t'y être interressé si rapidement

    claude

  4. #4
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 21
    Par défaut toujours erreur
    Script line: 4 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 ')

    BEGIN
    SELECT CASE TOTO
    WHEN 'rfrv' THEN 'rfrm'
    WHEN 'rfrm' THEN 'rf' at line 1

    est ce que cela vous parle ?
    le code complet est la copie de la suggestion de kazou

  5. #5
    Membre Expert

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Par défaut
    Bonjour,

    Avant de continuer de se perdre un peu, pourrait tu nous donner le script de création de ta base de données ?

  6. #6
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 21
    Par défaut
    volontier mais je fais comment ?

    claude

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

Discussions similaires

  1. Création d'une procédure sur un texte
    Par GLDavid dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 04/06/2007, 10h48
  2. Besoin d'aide pour faire une procédure stockée
    Par PoichOU dans le forum SQL
    Réponses: 17
    Dernier message: 30/04/2007, 17h55
  3. [VBA]Création d'une procédure de recherche
    Par Thegad dans le forum VBA Access
    Réponses: 3
    Dernier message: 03/04/2007, 18h16
  4. [Aide] Création d'une interface Ajout/Suppression
    Par Fredods26 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 19/10/2006, 14h16
  5. [DB2]Eurreur lors de la création d'une procédure
    Par uaspecitmoon dans le forum DB2
    Réponses: 1
    Dernier message: 25/05/2005, 19h23

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