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 :

Script sous MySQL Workbench


Sujet :

SQL Procédural MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Couteau suisse
    Inscrit en
    Décembre 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Couteau suisse
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 8
    Par défaut Script sous MySQL Workbench
    Bonjour,

    Je débute un peu sous MySQL ( mais avec une bonne expérience du langage SQL), et je souhaite exécuter un script depuis MySQL WorkBench ( ou même MySQLYog ) mais il semble qu'il y ai des erreurs de syntaxe dans mes scripts :
    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
    DELIMITER //
    USE mabase;
     
     
    DECLARE curseur CURSOR FOR SELECT cle, nom, cle2 FROM matable;
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
     
    DECLARE id BIGINT;
    DECLARE nom CHAR(35);
    DECLARE cle INT;
     
    OPEN curseur;
     
    REPEAT
    	FETCH curseur INTO id, nom, cle;
    	INSERT INTO doc (doc,cle,nom) VALUES ('Test greg',id,nom)
    UNTIL done END REPEAT;
     
    //
    Me renvoie une erreur sur le premier DECLARE.

    Si je reprends l'exemple du manuel MySQL (http://dev.mysql.com/doc/refman/5.0/fr/cursors.html), il semble que le fait de créer un procédure résout le soucis.
    MAIS, je ne souhaite pas créer de procédure, juste faire un traitement avec curseur à titre exceptionnel. Comment puis-je procéder ?

    Merci,

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 815
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 815
    Billets dans le blog
    14
    Par défaut
    Je ne suis pas habitué à la syntaxe des procédures et encore moins aux curseurs SQL mais si j'interprète correctement ton code, cette requête ne ferait-elle pas la même chose ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO doc (doc,cle,nom)
    SELECT 'Test greg', t.cle, t.nom
    FROM matable
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre habitué
    Homme Profil pro
    Couteau suisse
    Inscrit en
    Décembre 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Couteau suisse
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 8
    Par défaut
    En effet, tu as raison, cela résous mon problème dans l'immédiat, merci .
    En revanche, j'aimerais quand même pouvoir exécuter mon curseur (je peux être amené à créer des requêtes plus complexes par la suite) et comprendre comment faire. Si quelqu'un à une solution ou un exemple...

  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,

    tu seras obligé de créer une procédure stockée

    dans le genre...
    Code sql : 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
    delimiter $$
    create procedure truc()
    begin
    DECLARE curseur CURSOR FOR SELECT cle, nom, cle2 FROM matable;
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
     
    DECLARE id BIGINT;
    DECLARE nom CHAR(35);
    DECLARE cle INT;
     
    OPEN curseur;
     
    REPEAT
    	FETCH curseur INTO id, nom, cle;
    	INSERT INTO doc (doc,cle,nom) VALUES ('Test greg',id,nom)
    UNTIL done END REPEAT;
    CLOSE curseur;
    end$$
    delimiter ;
     
    call truc;

Discussions similaires

  1. relation avec attributs sous MySql Workbench
    Par safine dans le forum Administration
    Réponses: 1
    Dernier message: 01/05/2013, 20h05
  2. Réponses: 2
    Dernier message: 18/07/2011, 16h23
  3. [Wamp] Script PHP-MySQL sous Wamp
    Par od.dev dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 9
    Dernier message: 28/08/2008, 13h57
  4. [PHP-JS] Script PHP/MySql sous MAC
    Par Grumgrum dans le forum Langage
    Réponses: 5
    Dernier message: 30/05/2007, 13h00
  5. Lancer Scripts Perl sous MySQL 5
    Par hanky dans le forum Installation
    Réponses: 2
    Dernier message: 01/10/2006, 15h26

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