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 :

procédure et variable


Sujet :

SQL Procédural MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 8
    Par défaut procédure et variable
    Bonjour,

    je cherche à faire quelque chose de tout simple et pourtant...

    Voilà mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CREATE PROCEDURE `test2`( nb int )
    BEGIN  
    SET @limitsql = nb;
    select * from message limit @limitsql;
    END
    en fait je veux pouvoir passer des variables à mon select et la impossible. J'ai le message

    #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 '@limitsql;
    END' at line 4


    si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CREATE PROCEDURE `test3`( nbpush int )
    BEGIN  
    SET @limitsql = nbpush;
    select @limitsql;
    END
    ça marche

    Si vous avez des idées...
    Merci d'avance,

  2. #2
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 287
    Par défaut
    LIMIT n'accepte pas de variable, seulement des constantes.

    Si tu as besoin de faire ça, la seule façon c'est de passer par un PREPARE.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 8
    Par défaut
    Merci avec un prepare ça marche
    Le code si ça peut servir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    DROP PROCEDURE IF EXISTS test2;
    DELIMITER ||
    CREATE PROCEDURE `test2`(IN nb INT )
      BEGIN
        SET @maximum = nb;
        SET @requete = "SELECT * FROM message LIMIT ?";
        PREPARE stmt FROM @requete;
        EXECUTE stmt USING @maximum;
      END ||
    DELIMITER ;
    CALL test2(10);

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

Discussions similaires

  1. procédure avec variable dans le from
    Par cedlensois dans le forum Développement
    Réponses: 2
    Dernier message: 24/03/2009, 09h50
  2. [Conception] procédure stockée, variable, et select multi base
    Par overider dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 14/03/2007, 13h02
  3. [T-SQL] Procédure à nombre variable de paramètres ?
    Par NeoMan dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 28/12/2005, 15h07
  4. Réponses: 6
    Dernier message: 16/03/2005, 14h44
  5. [debutant] procédure et variables
    Par rohlio dans le forum Langage SQL
    Réponses: 6
    Dernier message: 04/07/2004, 18h33

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