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 Oracle Discussion :

Problème avec AsInteger sur appel de procédure stockée


Sujet :

SQL Oracle

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2003
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 29
    Points : 79
    Points
    79
    Par défaut Problème avec AsInteger sur appel de procédure stockée
    Bonjour à tous,

    j'utilise Delphi 6 avec Oracle 9.2 et mon code retourne des erreurs lors d'appel de procédures stockées avec le composant TSqlStoredProc (sp).

    Précisément, Delphi retourne une exception "EBcdOverflowException", lorsque j'utilise l'un des codes suivants

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    sp.params[0].AsInteger := IntVal; (valeur integer) 
    sp.execproc; ---> error
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Params[0].DataType := ftInteger; 
    sp.params[0].Value := IntVal; 
    sp.execproc; ---> error
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    sp.parambyname('xxx').AsInteger := IntVal; 
    sp.execproc; ---> error

    Par contre, je n'ai pas d'erreur avec le code suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    sp.params[0].Value := IntVal; (valeur integer) 
    sp.execproc; ---> OK
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    sp.params[0].AsString := StrVal; (valeur string) 
    sp.execproc; ---> OK

    Selon vous, pourquoi mon code ne marche-t-il pas avec AsInteger ?


    Remarques:
    1- sp.params[0].Value := IntVal;
    sp.execproc;

    ne retourne pas d'erreur pour des valeurs IntVal allant de 1 à 5
    et retourne une erreur pour des valeurs > 5

    2- ce même code (càd sp.params[0].AsInteger := IntVal) marche avec une base Interbase


    Merci de votre aide

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Février 2003
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 29
    Points : 79
    Points
    79
    Par défaut
    En poursuivant mes recherches et avec l'aide d'autres forums, je progresse...

    Le problème vient du fait que le DataType du paramètre Params[0] est ftBCD.
    En faisant params[0].AsInteger, le DataType est changé ce qui provoque une exception.

    Mais je ne comprend toujours pas pourquoi params[0].Value marche sans exception.

    Ceci dit, la vrai solution à mon problème serait de pouvoir utiliser params[0].AsInteger et donc d'avoir le son DataType à ftInteger.

    Avez-vous une solution ?

    Encore de votre aide.

Discussions similaires

  1. Appel de procédure stockée avec ADO.Net
    Par adilobrf dans le forum Développement Windows
    Réponses: 1
    Dernier message: 26/02/2013, 10h48
  2. Question sur la déclaration d'un paramètre lors de l'appel du procédure stockée
    Par th.garcia dans le forum Interfaces de programmation
    Réponses: 2
    Dernier message: 26/06/2009, 14h58
  3. Réponses: 26
    Dernier message: 24/06/2009, 10h32
  4. Problème d'appel à une procédure stockée
    Par champijulie dans le forum VBA Access
    Réponses: 1
    Dernier message: 17/09/2007, 13h17
  5. Problème avec un LIKE dans une procédure stockée
    Par Oluha dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 22/12/2004, 15h38

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