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 :

Procédure et tri paramétrable ...


Sujet :

SQL Firebird

  1. #1
    Candidat au Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 6
    Points : 4
    Points
    4
    Par défaut Procédure et tri paramétrable ...
    Bonjour à tous et à toutes.

    J'ai besoin qu'une procédure me renvoie des données classées selon un ordre
    paramétrable.
    Exemple :

    create procedure (
    key1 varchar(10),
    key2 varchar(10)) returns (
    resA integer,
    resB integer,
    resC integer
    ) as
    begin
    for select champA, champB, champC from Matable
    order by :key1, :key2
    into :resA, :resB, :resC do
    begin
    suspend;
    end
    end

    J'ai fait un premier essai, non concluant, en passant en paramètre des
    chiffres (pour indiquer le numéro de la colonne) au lieu des noms de champ....

    Auriez-vous une idée pour faire cela ?

    Merci de vos avis.

  2. #2
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Quel SGBD ?

    Attention, SQL n'est pas un langage procédural

  3. #3
    Candidat au Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 6
    Points : 4
    Points
    4
    Par défaut Procédure ...
    Le SGBD est Firebird 1.52.

  4. #4
    Membre confirmé Avatar de JustMe
    Inscrit en
    Juillet 2002
    Messages
    479
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 479
    Points : 593
    Points
    593
    Par défaut
    Tout est bon dans ta procedure sauf qu'il lui manque un nom.
    assure toi que les parametres de retour sont du même type que les champs du select.

  5. #5
    Membre actif Avatar de touhami
    Inscrit en
    Avril 2002
    Messages
    327
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 327
    Points : 264
    Points
    264
    Par défaut
    Bonjour,
    j'ai pas bien compris ta question

    J'ai fait un premier essai, non concluant, en passant en paramètre des
    chiffres (pour indiquer le numéro de la colonne) au lieu des noms de champ....
    tu veux passer quoi comme paramettres??? les Noms des champs ou bien l'index (le numero) des Champs ????.
    presise toi s'il te plait.
    bon courage.

  6. #6
    Candidat au Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 6
    Points : 4
    Points
    4
    Par défaut Procédure ...
    Bonjour,

    je veux passer en paramètre soit un nom de champ soit un chiffre (numéro de colonne) de façon à ce que je puisse appeler ma procédure de la manière suivante :
    select * from MAPROCEDURE(2, 1) ou
    select * from MAPROCEDURE('champB', 'champA') ou

    pour avoir un classement d'abord sur la 2ème colonne puis sur la première ...

    Mais le texte de la procédure étant compilé par FB, j'ai peur que l'on ne puisse faire une procédure 'dynamique' ...

    Laurent.

  7. #7
    Membre averti

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    379
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 379
    Points : 376
    Points
    376
    Par défaut
    execute statement et la commande qu tu cherche.

  8. #8
    Membre éprouvé
    Avatar de Andry
    Profil pro
    Informaticien
    Inscrit en
    Juillet 2002
    Messages
    1 164
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 164
    Points : 1 181
    Points
    1 181
    Par défaut
    La requête dynamique est possible depuis Firebird comme le dit Jean Jacques Varvenne, via la commande Execute Statement.
    Exemple
    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
     
    CREATE PROCEDURE TEST(
       PORDERBY1 VARCHAr(15),
       PORDERBY2 VARCHAR(15))
    RETURNS(
       CHAMPSA VARCHAr(15) ,
       CHAMPSB VARCHAR(15))
    AS
    DECLARE VARIABLE VARSQL VARCHAR(200);
    BEGIN
    VARSQL = 'SELECT CHAMPSA,CHAMPSB FROM MTABLE';
    VARSQL = SQL ||'ORDER BY '||PORDERBY1||','||PORDERBY2;
    FOR EXECUTE STATEMENT VARSQL INTO
        :CHAMPSA,
        :CHAMPSB
    DO
        SUSPEND;
     
    END
    Grossomodo, ça se passe comma ça
    A+

  9. #9
    Candidat au Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 6
    Points : 4
    Points
    4
    Par défaut Execute Statement ...
    Bonjour à tous ...

    et merci. Je ne connaissais pas ce genre chose, je viens de tester, ca marche nickel.
    Qui au niveau des perfs ?

    Merci encore.

    Laurent.

  10. #10
    Membre éprouvé
    Avatar de Andry
    Profil pro
    Informaticien
    Inscrit en
    Juillet 2002
    Messages
    1 164
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 164
    Points : 1 181
    Points
    1 181
    Par défaut
    A mon avis une requête dynamique ne pas aussi performante q'une requête statique, mais au moins ça permet de faire plus de chose.

    A+

Discussions similaires

  1. [Etat] Groupement/tri paramétré
    Par syldudu dans le forum IHM
    Réponses: 4
    Dernier message: 04/01/2007, 13h19
  2. Lancer une procédure avec un paramètre (débutant)
    Par Daniel MOREAU dans le forum MS SQL Server
    Réponses: 12
    Dernier message: 27/10/2006, 15h48
  3. Procédure stockée et paramètres de retour..
    Par nikalkal dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 20/07/2006, 17h53
  4. [VBA-A]procédure avec comme paramètre une propriété
    Par eultartuffe dans le forum VBA Access
    Réponses: 2
    Dernier message: 24/04/2006, 13h49
  5. Procédure stockée et paramètre CLOB
    Par Sebounet19 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 03/11/2005, 17h05

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