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

Bases de données Delphi Discussion :

[Delphi][Interbase] pb de procédures stockées


Sujet :

Bases de données Delphi

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3
    Points : 1
    Points
    1
    Par défaut [Delphi][Interbase] pb de procédures stockées
    Je suis passé récemment de BDE>Paradox en DBExpress> Interbase(6)
    Si Interbase ne m'a pas trop posé de problème , j'ai plus de souci avec une procédure stockée.

    J'ai une base :
    Code sql : 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
    CREATE TABLE INTERVENTION (
      PK_INTERVENTION INTEGER NOT NULL,
      DATE_DEP TIMESTAMP NOT NULL,
      DATE_FIN TIMESTAMP NOT NULL,
      OPERATE INTEGER NOT NULL,
      CUR_PRE CHAR(3),
      ORDRE INTEGER,
      CUR_PRE_ORDRE INTEGER,
      TYPANNE VARCHAR(20),
      DETAILEMPLACE VARCHAR(50),
      TRAVEFFECT VARCHAR(200),
      AZUR CHAR(1),
      NUMAZUR INTEGER,
      TRAVASUIVR CHAR(1),
      ENCOURS CHAR(1),
      PK_SOURCE INTEGER,
      FICHIER_LIE VARCHAR(100)
    )
    Et une procédure stockée :

    Code sql : 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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    CREATE PROCEDURE PROC_INTER_ASUIVRE  RETURNS (
      S_PK_INTERVENTION INTEGER,
      S_DATE_DEP TIMESTAMP,
      S_DATE_FIN TIMESTAMP,
      S_OPERATE INTEGER,
      S_CUR_PRE CHAR(3),
      S_ORDRE INTEGER,
      S_CUR_PRE_ORDRE INTEGER,
      S_TYPANNE VARCHAR(20),
      S_DETAILEMPLACE VARCHAR(50),
      S_TRAVEFFECT VARCHAR(200),
      S_AZUR CHAR(1),
      S_NUMAZUR INTEGER,
      S_TRAVASUIVR CHAR(1),
      S_ENCOURS CHAR(1),
      S_PK_SOURCE INTEGER,
      S_FICHIER_LIE VARCHAR(100)
    ) AS      
    BEGIN
                   FOR SELECT 
       PK_INTERVENTION, 
       DATE_DEP, 
       DATE_FIN, 
       OPERATE, 
       CUR_PRE,
       ORDRE,
       CUR_PRE_ORDRE,
       TYPANNE,
       DETAILEMPLACE,
       TRAVEFFECT,
       AZUR,
       NUMAZUR,
       TRAVASUIVR,
       ENCOURS,
       PK_SOURCE,
       FICHIER_LIE 
                FROM INTERVENTION 
                WHERE ( TRAVASUIVR = 'O' ) 
                INTO
        :S_PK_INTERVENTION, 
        :S_DATE_DEP, 
        :S_DATE_FIN, 
        :S_OPERATE, 
        :S_CUR_PRE,
        :S_ORDRE,
        :S_CUR_PRE_ORDRE,
        :S_TYPANNE,
        :S_DETAILEMPLACE,
        :S_TRAVEFFECT,
        :S_AZUR,
        :S_NUMAZUR,
        :S_TRAVASUIVR,
        :S_ENCOURS,
        :S_PK_SOURCE,
        :S_FICHIER_LIE
                DO
         BEGIN
           SUSPEND;
         END
    END

    Sous Delphi 7 J'utilise un TSQLStoredProc qui pointe ma base par un
    TSQLConnection. Je retrouve ma procédure stockée dans StoredProcName.
    Je retrouve même mes 16 champs dans params.
    Mais si je met active à true j'obtient : "Curseur non renvoyé par Query"
    J'utilise Interbase 6 en mode local, n'ayant pas encore reçu le serveur.
    J'ai sans doute oublié qq chose.
    Quelqu'un pourrait-il m'aider ?
    J'utilise presque le même mécanisme pour incrémenter PK_INTERVENTION avec
    un déclencheur et un générateur et là ça fonctionne.
    Existe t'il une méthode pour débuger une procédure ?

  2. #2
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut,

    Citation Envoyé par 0rus59
    Mais si je met active à true j'obtient : "Curseur non renvoyé par Query"
    Personnelement j'utilise la méthode ExecProc du TIBStroredProc pour appeler une PS. N'ayant jamais utilisé Active := True, je dirais que le problème vient peut-être de là !

    Par contre dans le cas présent je ne vois pas l'intérêt d'utiliser une PS, car celle-ci n'est en fait qu'une simple requête sélection. A ta place j'utiliserais un simple TIBQuery ou autre solution je créerais une vue.

    @+ Claudius.

    PS: Bienvenu parmi nous !

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Le principe de l'appel de procédures stockées dans interbase me plait bien, car à priori, il allège le traffic sur le réseau. Ne circule que les infos strictement necessaires. Lorsqu'on a un certain nombre de connections c'est important. Même si c'est encore en test ( j'utilise Interbase en local car j'ai pas encore reçu le serveur).
    Peut-être suis-je trop nunu
    Me reste le query interne effectivement. J'ai déjà commencé dans ce sens mais ça m'emballe pas trop ( même si ça fonctionne bien apparemment ).

  4. #4
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 771
    Points
    2 771
    Par défaut
    Citation Envoyé par 0rus59
    Je suis passé récemment de BDE>Paradox en DBExpress> Interbase(6)
    pourqoi pas utlisé IBX au lieu de DBexpresse, il est plus apte pour IB,????
    PAS DE DESTIN, C'EST CE QUE NOUS FAISONS

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    DBExpress est portable sur d'autres passerelles ( OS) et d'autre bases.
    Ne connaissant pas l'avenir , ça me donne une porte de sortie sans tout réécrire.

Discussions similaires

  1. Réponses: 2
    Dernier message: 27/08/2013, 08h15
  2. [DELPHI 2005]TADODATASET et procédure stockée
    Par Frank dans le forum Bases de données
    Réponses: 6
    Dernier message: 10/11/2005, 19h51
  3. [INTERBASE 6.0] Procédures stockées
    Par Vulcanos dans le forum InterBase
    Réponses: 3
    Dernier message: 11/03/2005, 19h19
  4. procédure stockée Oracle dans delphi 6
    Par UPNE387 dans le forum Bases de données
    Réponses: 3
    Dernier message: 04/05/2004, 09h47
  5. PRocédure stocké, comment appeler avec delphi?
    Par SkyDev dans le forum Bases de données
    Réponses: 3
    Dernier message: 09/04/2004, 18h20

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