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

JDBC Java Discussion :

Récupérer un record comme retour d'une procédure stockée en JAVA


Sujet :

JDBC Java

  1. #1
    Candidat au Club
    Inscrit en
    Mars 2008
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Récupérer un record comme retour d'une procédure stockée en JAVA
    Salut à tous,
    j'utilise un pilote JDBC pour se connecter à une base de donnée oracle 9i. Le problème c'est quand j'appelle une procédure stockée avec un type de retour "OUT" Record, cela gènère une exception. J'ai trouvé sur le net que ce problème vient du fait que JDBC ne supporte pas l'appel à des procédures ou des fonctions ayant comme paramètre des arguments de type Record ou Boolean. J'ai touvé une solution pour les Boolean mais j'arrive pas à le faire pour les Record.
    Si quelqu'un possède une idée, je suis preneur .

    Voici mon le code de ma fonction stockée :
    /***************************/
    FUNCTION c_out_proc (P_MONTANT IN NUMBER,
    P_CODE_DEVISE IN VARCHAR2,
    P_CHAMP IN VARCHAR2,
    P_TRT IN VARCHAR2,
    P_msg OUT PKG_MDW_DEF_GENERAL.PARAM_MSG
    )
    RETURN INTEGER IS
    output Boolean;
    BEGIN
    output := DB_MDW_CTRL_AMOUNT(P_MONTANT,P_CODE_DEVISE,P_CHAMP,P_TRT,P_msg);
    IF (output = TRUE) THEN
    RETURN 1;
    ELSE
    RETURN 0;
    END IF;
    END;
    /***************************/

    avec PKG_MDW_DEF_GENERAL.PARAM_MSG de type record, son code est le suivant :
    /**************************************/
    TYPE PARAM_MSG IS RECORD (NO VARCHAR2(10),
    P1 VARCHAR2(255),
    P2 VARCHAR2(255),
    P3 VARCHAR2(255),
    USER VARCHAR2(1024),
    TECH VARCHAR2(1024));
    /**************************************/

    et DB_MDW_CTRL_AMOUNT est la fonction essentielle que j'utilise. En effet j'ai écrit la fonction c_out_proc pour remédier à l'exception générée par le JDBC lorsque la fonction stockée retourne un boolean. J'ai changé le type de retour de boolean vers Integer. Il reste de trouver une solution au type de retour Record.

  2. #2
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    je ne sais pas si ça va solution ton pb, mais moi pour faire un truc équivalent j'utilise un tableau de varchar plutot qu'un record
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CREATE OR REPLACE TYPE TABLEOFSTRING is TABLE OF NVARCHAR2(4000)
    ensuite pour le déclarer en type de retour :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    stmt.registerOutParameter( 1, OracleTypes.ARRAY,"TABLEOFSTRING" );
    si ça peut te servir ...
    "If email had been around before the telephone was invented, people would have said, 'Hey, forget email! With this new telephone invention I can actually talk to people!"

    Besoin d'une nouvelle méthode pour développer ? -> http://www.la-rache.com/

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/02/2013, 15h24
  2. Réponses: 7
    Dernier message: 28/10/2010, 21h55
  3. Réponses: 4
    Dernier message: 15/05/2008, 11h25
  4. [2000] Récupérer la valeur de retour d'une procédure stockée
    Par drinkmilk dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 25/08/2006, 09h46
  5. Un fichier .bmp comme paramètre d'une Procédure stockée
    Par FONKOU dans le forum Bases de données
    Réponses: 2
    Dernier message: 28/10/2004, 17h56

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