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 :

[IB][IBQUERY][D7 pro] Procédure stockée ne renvoit rien


Sujet :

Bases de données Delphi

  1. #1
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Points : 5 673
    Points
    5 673
    Par défaut [IB][IBQUERY][D7 pro] Procédure stockée ne renvoit rien
    Bonjour,

    J'ai besoin, pour mon application, d'utiliser une procédure stockée qui doit me renvoyer X enregistrements :
    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
     
    1> SET TERM ^;
    2> CREATE PROCEDURE
    3>         VA_CHERCHER( XROWS INTEGER , XMOT VARCHAR(30), XRUB INTEGER )
     
    4> RETURNS (
    5>          ID INTEGER,
    6>          TITRE VARCHAR(100),
    7>          RUB INTEGER,
    8>          COL1 VARCHAR(20),
    9>          COL2 BLOB SUB_TYPE 1 SEGMENT SIZE 80,
    10>         COL3 INTEGER,
    11>         )
     
    12> AS
    13> BEGIN
    14>    IF(XROWS < 1) THEN EXIT; 
    15>   FOR SELECT
    16>             DISTINCT TITRE , ID, RUB, COL1, COL2, COL3
     
    17>              FROM  TABLE1 
     
    18>              WHERE RUB = :XRUB AND TITRE LIKE :XMOT  
     
    19>             INTO TITRE , ID, RUB, COL1, COL2, COL3
    20>    DO
    21>    BEGIN
    22>       SUSPEND;
    23>       XROWS = XROWS - 1;
    24>       IF (XROWS < 1) THEN EXIT;
    25>    END
    26> END^
    27> SET TERM ; ^
    Dans D7 elle est appellée comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    DataMod.IBQuery1.SQL.Clear;
    DataMod.IBQuery1.SQL.Add(
          'SELECT * FROM VA_CHERCHER (10, '+QuotedStr('%'+MotRecherche+'%' )+', 1)');
    DataMod.IBQuery1.Prepare;
    DataMod.IBQuery1.Open;
    Ma procédure ne me renvoit rien. Il n'y a aucun message d'erreur.
    Si je supprime (ou passe en commentaire) la ligne 18 de la procédure stockée ( Clause WHERE ...) elle me renvoit 10 résultats !

    J'ai meme essayé en spécifiant un mot qui est également dans un TITRE et un numero de rubrique egalement dans la table
    (vérifié avec IBConsole)
    J'ai aussi essayé en la mettant directement DANS la procédure stockée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    // j'ai volontairement  limité le champs de la recherche à la colonne RUB , sans spécifier le mot recherché (la clause AND TITRE....  est enlevée pour le test)
     
    18>   WHERE RUB = 1
    Conclusion :
    J'arrive à passer la variable XROWS mais pas les variables XMOTS et XRUB


    Notes :
    - Les N° de lignes (xx>) sont ici pour la compréhension...
    - La requete SQL est effectuée au cours d'une TRANSACTION (IBTransaction.Commit;except >IBTransaction.Rollback
    - La BD (IB6 GPL) est CONNECTED
    - SQLDialect = 3
    - J'ai lu l'excellent tuto sur les Stored procedures
    - J'ai déja cherché partout ???
    - Cela fait déja + de 11 heures que je suis dessus..
    - Je vais me coucher


    Quelqu'un peut-il maider SVP ?

    Cordialement
    N1bus

  2. #2
    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 Re: [IB][IBQUERY][D7 pro] Procédure stockée ne renvoit rien
    Salut
    J'ai remarqué dans ton code un petit souci
    Essaie avec ceci
    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
    34
    35
    36
    37
    38
    39
    40
    41
     
    1> SET TERM ^;
    2> CREATE PROCEDURE
    3>         VA_CHERCHER( XROWS INTEGER , XMOT VARCHAR(30), XRUB INTEGER )
     
    4> RETURNS (
    5>          ID INTEGER,
    6>          TITRE VARCHAR(100),
    7>          RUB INTEGER,
    8>          COL1 VARCHAR(20),
    9>          COL2 BLOB SUB_TYPE 1 SEGMENT SIZE 80,
    10>         COL3 INTEGER,
    11>         )
     
    12> AS
    13> BEGIN
    14>   IF(XROWS < 1) THEN EXIT; 
    15>   FOR SELECT  DISTINCT
    16>                       TITRE,
    17>                       ID,
    18>                       RUB,
    19>                       COL1,
    20>                       COL2,
    21>                       COL3
    22>              FROM  TABLE1 
    23>              WHERE (RUB = :XRUB AND TITRE LIKE :XMOT||'%')  
    24>             INTO 
    25>                        :TITRE,
    26>                        :ID,
    27>                        :RUB,
    28>                        :COL1,
    29>                        :COL2,
    30>                        :COL3
    31>    DO
    32>    BEGIN
    33>       SUSPEND;
    34>       XROWS = XROWS - 1;
    35>       IF (XROWS < 1) THEN EXIT;
    36>    END
    37> END^
    38> SET TERM ; ^
    Le souci se passe au niveau de Like. il faut que tu utilise le wildcard '%' pour specifier que ca commence par XMOT sinon, utilise l'instruction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    23>              WHERE (RUB = :XRUB AND TITRE LIKE :XMOT||'%')  
    ou
    23>              WHERE (RUB = :XRUB AND TITRE STARTING WITH :XMOT)
    N'oublie pas les : devant les variables de retour

    Courage
    A+

  3. #3
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Points : 5 673
    Points
    5 673
    Par défaut
    Merci

    Je vais essayer ça.

    N1bus

  4. #4
    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
    Fais moi signe si ça marche ou pas car je n'ai pas tester.

    A+

  5. #5
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Points : 5 673
    Points
    5 673
    Par défaut
    Non, ça ne marche toujours pas .
    De toutes façons, le problème n'est pas dans le LIKE puisque j'ai déja testé en m'arretant à la clause WHERE RUB = :XRUB (sans passer XRUB en paramètre) en essayant directement :
    Citation Envoyé par Andry
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    23>              WHERE (RUB = :XRUB AND TITRE LIKE :XMOT||'%')  
    24>             INTO 
    25>                        :TITRE, 
    26>                        :ID, 
    27>                        :RUB, 
    28>                        :COL1, 
    29>                        :COL2, 
    30>                        :COL3
    Quant aux : pour les valeurs de retour, ISQL me renvoit l'erreur "Token Unknown .... " dès que je les mets.

    Il ne veut pas des parenthèses non plus dans le WHERE.

    N1bus

  6. #6
    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
    Je ne comprends pas vraiment alors.
    Peut être est ce le fait que j'utilise IbExpert pour l'admin.
    Sinon, je fais comme ça et ça marche impec chez moi.
    Courage

    A+

  7. #7
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Points : 5 673
    Points
    5 673
    Par défaut
    J'avance,

    J'ai réussi a créer la procédure depuis IBConsole (ISQL) mais SANS mettre les : devant les valeurs de retour (Apres INTO) et en mettant
    Je vais essayer les autres conditions petit à petit.

    N1bus

  8. #8
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Points : 5 673
    Points
    5 673
    Par défaut
    Bon,
    Je viens d'essayer Marathon (Outil d'administration Interbase) :
    Visiblement y'a plusieurs syntaxes selon qu'on utilise tel ou tel logiciel pour créer les procédures stockées ou triggers depuis DSQL ou ISQL.

    Donc Mef ....

    A propos de Marathon :
    C'est génial, Open source et trés facile à manipuler.
    Création des bases ou des tables , création des Générateurs AutoInc automatisé, visualisation claire , bref pour l'instant y'a rien à redire.

    Merci à Patrick and Belinda O'Keeffe de Gimbal Software Services
    http://www.gimbal.com.au/

    Vous le trouverez ici : http://sourceforge.net/projects/gmarathon/

    N1bus

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

Discussions similaires

  1. [PRO*C] CLOB en paramètre d'une procédure stockée
    Par snotter dans le forum Interfaces de programmation
    Réponses: 2
    Dernier message: 01/04/2010, 21h50
  2. [Pro*C] Appel dynamique à une procédure stockée
    Par wedgeantilles dans le forum Interfaces de programmation
    Réponses: 3
    Dernier message: 22/10/2008, 09h19
  3. [PRO*C] Appel procédure stockée
    Par ramaro dans le forum Interfaces de programmation
    Réponses: 4
    Dernier message: 20/02/2008, 16h22
  4. [SQL2K]Procédure stockée qui renvoit deux fois le résultat
    Par neuropathie dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 16/05/2006, 16h38
  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