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 Firebird Discussion :

erreur Procédure stockée


Sujet :

SQL Firebird

  1. #1
    Invité
    Invité(e)
    Par défaut erreur Procédure stockée
    Bonjour,
    Voici mon problème, je viens de commencer une procédure stockée qui me premettra d'afficher ma table en pas de 10 enregistrements par page.
    Un peu d'indulgence, je débute. Quelqu'un peut-il m'aider à remplacer mes ??? par ce qui doit être écrit ? Je ne sais pas ce qu'il faut inscrire dans les conditions. Merci par avance.

    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
    set term !! ;
    CREATE PROCEDURE  EXTRAITLIGNES_FORUM (Debut INTEGER, Fin INTEGER)
    RETURNS (POST_ID INTEGER,  FORUM_ID VARCHAR (8))
    AS
    DECLARE VARIABLE i INTEGER;
    BEGIN
      i = 0;
      FOR SELECT POST_ID, FORUM_ID FROM FORUM_POSTS WHERE AFFICHE=1 ORDER BY POST_DATE DESC
      INTO POST_ID, FORUM_ID DO
        BEGIN
          i = i + 1;
          IF (i > :Fin) THEN ???  EXIT ;
          IF (i >= :Debut) THEN ???  SUSPEND;
        END
    END !!
    set term !! ;
    Edité par Barbibulle
    Ajout des balises codes (même si on ne peut pas utiliser la mise ne forme des caractères c'est plus lisible quand même).

  2. #2
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    Les variables hotes dans les ordres SQL doivent être précédées de deux point ":" alors que ce n'est pas obligatoire dans le reste de la PS.

    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
    set term !! ; 
    CREATE PROCEDURE  EXTRAITLIGNES_FORUM (Debut INTEGER, Fin INTEGER) 
    RETURNS (POST_ID INTEGER,  FORUM_ID VARCHAR (8)) 
    AS 
    DECLARE VARIABLE i INTEGER; 
    BEGIN 
      i = 0; 
      FOR SELECT POST_ID, FORUM_ID FROM FORUM_POSTS WHERE AFFICHE=1 ORDER BY POST_DATE DESC 
      INTO :POST_ID, :FORUM_ID DO 
        BEGIN 
          i = i + 1; 
          IF (i > Fin) THEN EXIT ; 
          IF (i >= Debut) THEN SUSPEND; 
        END 
    END !! 
    set term !! ;
    Par contre je ne vois pas ce que vous vouliez ajouter à la place de vos ??? .

    Je ne sais plus si c'est vous qui aviez posé la question mais sous Firebird 1.5 il est inutile d'écrire une tel PS grace à la fonction FIRST et SKIP

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT FISRT 10 SKIP 30 POST_ID, FORUM_ID FROM FORUM_POSTS WHERE AFFICHE=1 ORDER BY POST_DATE DESC;

  3. #3
    Invité
    Invité(e)
    Par défaut Les ":"
    Je n'utilise pas Firebird mais Interbase v5. donc je suis contraint de faire une procédure stockée.

    Par contre les ":" me provoque une erreur supplémentaire lorsque j'exécute la requête.

  4. #4
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    Ah j'espère qu'il n'y a pas trop de différences entre la version 5 et la 6.

    Sur la version 6 ce que j'ai donné fonctionne parfaitement mis à part le dernier Set term qui est faux, il faut mettre :
    à la place.

    Quel est le message d'erreur ?

  5. #5
    Invité
    Invité(e)
    Par défaut ça passe
    Merci beaucoup pour le coup de main. Je viens de corriger mon erreur en appelant Debut et Fin par ":". Vous m'avez mis sur le bon chemin. Merci encore. Il ne me restera plus qu'à chercher comment exécuter cette procédure à partir de mon fichier .php

  6. #6
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    Pour l'appeler faites

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select POST_ID, FORUM_ID from EXTRAITLIGNES_FORUM(10,20);

Discussions similaires

  1. Erreur procédure stocké d'archivage
    Par SixtyOne dans le forum PL/SQL
    Réponses: 6
    Dernier message: 06/04/2009, 12h44
  2. erreur procédure stockée
    Par ChronosXIII dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 16/03/2009, 10h31
  3. Réponses: 0
    Dernier message: 04/02/2009, 12h26
  4. Erreur Procédure Stockée et ASP
    Par dedein84 dans le forum ASP
    Réponses: 1
    Dernier message: 08/08/2008, 14h21
  5. Erreur procédure stockée : curseur read only
    Par Oluha dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 08/11/2005, 09h50

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