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 :

transfert de variables


Sujet :

SQL Firebird

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Retraité
    Inscrit en
    Avril 2004
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2004
    Messages : 76
    Par défaut transfert de variables
    Nouveau Problème.

    Si je rentre la donnée :'1800000080F21828' directement dans le champs 'Nom' varchar(16) de la base avec laquelle je travaille, il n'y a pas de problème.

    Si je veux récupérer l'index 'IDXCAPT' à l'aide de la procédure stockée suivante et par l'intermédiaire de IBStoreProc de Delphi fournissant le Nom '1800000080F21828' au paramByName('NOMCAPT') FireBird déclanche une erreur de conversion de données:

    CREATE PROCEDURE CHERCHE_IDX (
    NOMCAPT VARCHAR(16))
    RETURNS (
    IDXCAPT BIGINT)
    AS
    begin
    /* Procedure Text */
    SELECT IDENT_CAPTEURS.INDEXCAPT
    FROM IDENT_CAPTEURS
    WHERE IDENT_CAPTEURS.IDENTIFIANT = :NOMCAPT
    INTO :IDXCAPT;

    suspend;
    end^

    Je progresse lamentablement sur ce coup là. Si quelqu'un voit la faille ...

    Merci d'avance.

  2. #2
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 293
    Par défaut
    je ne connais rien à FireBird, mais je pense que tu devrais placer ton INTO à la fin du SELECT et donc juste avant le FROM.

  3. #3
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Février 2005
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Février 2005
    Messages : 100
    Par défaut
    Ah bas non le INTO est bien placé.
    Par contre le problème doit provenir de IDENT_CAPTEURS.INDEXCAPT car il doit s'agit d'un bigint sinon ton erreur s'explique.

    Si c'est forcément un entier, alors préfère utiliser la requête suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT Cast(IDENT_CAPTEURS.INDEXCAPT as bigint)
    FROM IDENT_CAPTEURS
    WHERE IDENT_CAPTEURS.IDENTIFIANT = :NOMCAPT
    INTO :IDXCAPT;
    si ça marche toujours pas essaie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT IDENT_CAPTEURS.INDEXCAPT 
    FROM IDENT_CAPTEURS
    WHERE Cast(IDENT_CAPTEURS.IDENTIFIANT as varchar(16)) = :NOMCAPT
    INTO :IDXCAPT;

  4. #4
    Membre confirmé
    Profil pro
    Retraité
    Inscrit en
    Avril 2004
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2004
    Messages : 76
    Par défaut
    Merci à SillyCoder,

    C'était bien la bonne réponse à peu de choses près.
    La fonction delphi transmettait une chaine de 16 caractères plus les guillemets de part et d'autre soit 18 caractères vers la procédure stockée pour un champ de 16 caractères. le fait de supprimer les guillemets de la chaine a résolu le problème de la variable entrante.
    Cette procédure devait retourner un bigint à la fonction Delphi qui était définie comme un Integer (trop petit).
    Si J'avais fait attention au libellé de l'erreur renvoyée qui changeait à chaque fois que j'essayai de résoudre la transmission du premier paramètre, j'aurai pu supposer que ce modification était la conséquence du transfert de la deuxième valeur et non pas d'une mauvaise interprétation de ma première valeur corrigée.

    Merci les gars de votre aide.

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

Discussions similaires

  1. pt->py:transfert de variables
    Par kowabounga dans le forum Zope
    Réponses: 1
    Dernier message: 17/08/2006, 11h00
  2. Session: pour le transfert de variables
    Par arti2004 dans le forum Langage
    Réponses: 15
    Dernier message: 28/05/2006, 18h16
  3. [VBA-E]Userform et transfert de variable
    Par Yanos dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 27/03/2006, 09h16
  4. transfert des variables de sessions
    Par Julie 2006 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 15
    Dernier message: 26/02/2006, 11h58
  5. [vb] Transfert de variables et listbox
    Par lepiou dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 13/01/2006, 17h39

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