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 :

Petite question de débutant sur procédure stockée


Sujet :

SQL Procédural MySQL

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Petite question de débutant sur procédure stockée
    Bonjour,

    je me mets gentiment aux procédures stockées et j'aimerais comprendre d'où vient mon erreur sur le code suivant (même si une telle procédure stockée n'a pas un réel intérêt, c'est plus pour comprendre)

    - Soit une table news contenant les champs id, title, content
    - Je souhaite un limit de 0, X et donc définir la variable X

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    DELIMITER $$
    CREATE PROCEDURE GetLastNews(IN tt TINYINT)
    BEGIN
    	SELECT id, title, content
    	FROM vs_news
    	ORDER BY date DESC
    	LIMIT 0, tt;
    END $$
    Le problème vient visiblement de tt dans le LIMIT 0, tt étant donné que sans ça fonctionne.

    J'aimerais donc comprendre pourquoi ma procédure ne fonctionne pas.

    Merci d'avance pour le coup de main!

  2. #2
    Expert confirmé
    Avatar de becket
    Profil pro
    Informaticien multitâches
    Inscrit en
    Février 2005
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien multitâches
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 2 854
    Points : 5 915
    Points
    5 915
    Par défaut
    En jetant un oeil sur internet, je viens de lire que mysql n'accepte pas limit dans un procédure stockée

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Merci pour ta réponse.

    Aurais tu le lien de ta source éventuellement?

    Flexii

  4. #4
    Membre averti Avatar de GyZmoO
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2006
    Messages : 428
    Points : 301
    Points
    301
    Par défaut
    Salut.

    Le début d'une explication :

    http://bugs.mysql.com/bug.php?id=11918

    Sinon, pour contourner tu peux toujours utiliser un curseur.

    @+
    define: Programmeur : Celui qui résout un problème que vous n'aviez pas, d'une façon que vous ne comprenez pas.

  5. #5
    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
    C'est faux LIMIT est permis mais TU DOIS utiliser des valeurs littérales et non des variables, relisez bien!!!

    Le contournement simple est de faire une requête préparée dans pour exécuter la tâche.

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    DELIMITER $$
    CREATE PROCEDURE GetLastNews(IN tt TINYINT)
    BEGIN
    	DECLARE ordre varchar(255) default concat("SELECT id, title, content FROM vs_news ORDER BY date DESC LIMIT 0, ",tt);
    	PREPARE exe FROM ordre;
    	EXECUTE ordre;
    	DEALLOCATE PREPARE exe;
    END $$
    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

Discussions similaires

  1. question sur procédures stockés ?
    Par ouadie99 dans le forum C#
    Réponses: 4
    Dernier message: 22/05/2008, 13h31
  2. Petite question de débutant sur les lumières
    Par Clad3 dans le forum OpenGL
    Réponses: 12
    Dernier message: 05/11/2007, 22h22
  3. [Débutant(e)] Autorisations sur procédures stockées
    Par boulete dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 15/04/2006, 18h08
  4. Question de débutant sur la commande Accept
    Par deaven dans le forum Oracle
    Réponses: 1
    Dernier message: 21/10/2005, 08h25
  5. question de débutant sur les objets
    Par boucher_emilie dans le forum ASP
    Réponses: 3
    Dernier message: 06/08/2004, 10h51

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