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 :

[HELP] Procédure stocké


Sujet :

SQL Firebird

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2003
    Messages : 163
    Points : 90
    Points
    90
    Par défaut [HELP] Procédure stocké
    Bonjour à tous,

    Comme d'ailleurs, que j'ai entendu, que la procédure stocké est fortement interessant et rapide quand on utilise le programme client et le serveur (bdd) dans une entreprise. Est ce que c'est vrai?

    En fait je ne comprends pas très bien concernant la procédure stocké, je vous prie de vous vouloir bien nous expliquer à quoi servent et aussi un des exemples et m'y permettre de bien comprendre concernant le sujet.

    Merci de votre compréhension et de votre aide.

    Meilleures salutations...

    Fred
    Cordialement

    Fred ;-)

  2. #2
    Futur Membre du Club
    Inscrit en
    Janvier 2003
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Bonjour

    Je suis pas informaticien mais je peux te répondre une procédure stockée et un programme qui déclenche automatiquement un certain nombre d'action.
    Ce programme est sur le serveur uniquement et se déclenche ou pas automatiquement.
    La différence avec un trigger cq le trigger se déclenche lors d'une action de manipulation des données alors que la procédure stockée se déclenche selon cetains critéres.
    J'iimagine que les SGBD des banques sont remplis de procédure stockée par exemple pour calculer le montant des agios ou les frais que tu as quand tu dépasses le découvert autorisé.

    Xavier

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2003
    Messages : 163
    Points : 90
    Points
    90
    Par défaut
    Bonjour,

    Ah d'accord, donc le procédure stocké est-elle vraiment nécessaire? Donc si j'ai bien compris, la procédure stocké représente une avantage, c'est qu'on peut utiliser des nombreux ordinateurs partout avec un seul serveur de base de données.

    Donc, soit disant comme par exemple, j'ai la table article, la table de facturation, et la table de la ligne de facturation (ou se trouve la liste des articles)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ARTICLE                    FACTURE            LIGFACT
    code article              code fact           code ligne fact
    denom                     code client         code fact
    prix                      totalprix           code art
    stock                                         code quant
                                                  PU
                                                  Total
    Pourriez vous m'en donnez un exemple de programmation de procédure stocké afin que j'y mettes au plus clair et de comprendre facilement le fonctionnement de la programmation.

    Encore merci beaucoup

    Amités

    Fred
    Cordialement

    Fred ;-)

  4. #4
    Futur Membre du Club
    Inscrit en
    Janvier 2003
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Bonjour

    Le code de la procédure stockée s'écrit en SQL dont l'implémentation différe selon le serveur SQL que tu utilises.
    Mais j'imagine que la commande commence par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CREATE PROCEDURE 
    calcul total des commandes par cliente
    Je suis pas un pro de SQL mais les exemples abondent sur ce site.
    Puis tu récupére ta valeur

    Xavier

  5. #5
    Membre régulier
    Inscrit en
    Avril 2002
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 70
    Points : 84
    Points
    84
    Par défaut
    Bonjour,

    LE trigger n'est pas vraiment un procédure stockée. C'est un déclancheur qui s'éxécute soir avant un insert, après, etc. LE serveur n'a pas besoin que tu le déclanches, ça se fait automatiquement.

    Pour une procédure stockée, c'est toi qui doit dire quand tu veux qu'il s'éxécute. C'est un mélange de C et de requête SQL. L'avantage, c'est que la requête s'éxécute sur le serveur et retourne (si nécéssaire), les valeurs demandées. Donc, moins de traffic sur la bande passante. Pour un exemple, regarde la documentation d'Interbase. L'utilsiation est très variée et la DOC en montre plusieurs et bien documentés.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2003
    Messages : 163
    Points : 90
    Points
    90
    Par défaut
    Salut Dihap,

    Merci pour les informations, je lirais les doc d'aide sur l'interbase. Je comprends mieux pour l'accent, si j'ai des questions, je ferais appel à vous.

    Encore merci.

    Fred
    Cordialement

    Fred ;-)

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2003
    Messages : 163
    Points : 90
    Points
    90
    Par défaut
    Re-Salut,

    J'ai un gros souci! Pourriez m'aider si c'est possible.
    En fait, j'utilise Delphi comme logiciel de programmation avec Interbase.

    J'ai la table client:
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
     
    /* Table: CLIENT, Owner: SYSDBA */
     
    CREATE TABLE "CLIENT" 
    (
      "IDCLIENT"	INTEGER NOT NULL,
      "NOM"	VARCHAR(30) NOT NULL,
      "PRENOM"	VARCHAR(30) NOT NULL,
      "ADRESSE"	VARCHAR(100) NOT NULL,
      "NO"	INTEGER NOT NULL,
      "CP"	INTEGER NOT NULL,
      "TELPRIVE"	VARCHAR(30),
      "TELPROF"	VARCHAR(30),
      "FAX"	VARCHAR(30),
      "EMAIL"	VARCHAR(30),
     PRIMARY KEY ("IDCLIENT")
    );
    SET TERM ^ ;
     
     
    /* Triggers only will work for SQL triggers */
     
    CREATE TRIGGER "T$_IDCLIENT" FOR "CLIENT" 
    ACTIVE BEFORE INSERT POSITION 0
    As
    begin
      new.IDCLIENT= gen_id(G$_IDCLIENT,1);
    end
     ^
     
    COMMIT WORK ^
    SET TERM ;^
    J'ai essayé de créer la procédure stocké trouvé sur le net, je ne sais plus l'adresse...
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    COMMIT WORK;
    SET AUTODDL OFF;
    SET TERM ^ ;
     
    /* Stored procedures */
     
    CREATE PROCEDURE "GEN_IDCLIENT" 
    RETURNS
    (
      "KEY_CLIENT" INTEGER
    )
    AS
    BEGIN EXIT; END ^
     
     
    ALTER PROCEDURE "GEN_IDCLIENT" 
    RETURNS
    (
      "KEY_CLIENT" INTEGER
    )
    AS
    BEGIN
     KEY_CLIENT = GEN_ID(G$_IDCLIENT,1);
    END
     ^
     
    SET TERM ; ^
    COMMIT WORK;
    SET AUTODDL ON;
    En fait, dans le dévelloppement Delphi, j'ai ajouté un DBNavigator, et puis au composant TIBDatabase (IBDB) , TIBQuery (IBQClient), TIBStoredProc (IBSP), TDataSource(DSClient) et TIBUpdateSQL(IBUClient).

    En fait, je voudrais que le code IDClient doit être incrémenté par 1 automatiquement lorsqu'on ajoute un nouveau client! J'utilise alors:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    procedure TIBDM.IBQClientBeforePost(DataSet: TDataSet);
    begin
    	if (IBQClient.State = dsInsert) then begin
       	IBSP.StoredProcName := 'GEN_IDCLIENT';
          IBSP.ExecProc;
          IBQClient.FieldByName('IDCLIENT').AsInteger := IBSP.FieldByName('KEY_CLIENT').AsInteger;
          end;
    end;
    Lors d'un test, le programme Delphi dit que IBDB: Champ 'KEY_CLIENT' introuvable


    Alors que j'ai même suivi la méthode officielle du IB Compteur dansle site http://www.developpez.com/upload/klo...B6compteur.htm, dommage qu'il ne fournit même pas un exemple de démonstraction afin aux dévellopeurs débutants permet d'améliorer...

    Merci beaucoup.

    Fred
    Cordialement

    Fred ;-)

  8. #8
    Membre régulier
    Inscrit en
    Avril 2002
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 70
    Points : 84
    Points
    84
    Par défaut
    C'est une façon de le faire, mais j'utilise un méthode plus simple.

    Dans ton trigger tu écris,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    CREATE TRIGGER "T$_IDCLIENT" FOR "CLIENT" 
    ACTIVE BEFORE INSERT POSITION 0 
    As 
    begin 
       if (new.IDCLIENT is null) then
          new.IDCLIENT= gen_id(G$_IDCLIENT,1); 
    end
    Ton générateur est déjà créé, alors tu n'as plus rien à faire.

    Quand tu insères, tu ne mets pas de valeur pour le champs IDCLIENT et, juste avant d'insérer, Interbase va voir que ton champ est vide et va lui mettre une valeur générée.

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

Discussions similaires

  1. passage d'un nom de table dans une procédure stockée
    Par thierry V dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 26/07/2010, 16h48
  2. Procédure stocké:Insert et renvoie de la clé primair
    Par caramel dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 17/04/2003, 09h34
  3. [Pervasive SQL ] procédure stockée
    Par magellan dans le forum Autres SGBD
    Réponses: 2
    Dernier message: 25/10/2002, 13h17
  4. Explication procédure stockée
    Par underworld dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 09/09/2002, 10h51
  5. [Comparatif] Procédures stockées, triggers, etc.
    Par MCZz dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 28/08/2002, 12h27

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