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 :

fonction stockée retournant un record


Sujet :

JDBC Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 23
    Points : 19
    Points
    19
    Par défaut fonction stockée retournant un record
    Salut !

    J'ai une fonction PL\SQL retournant un "record" pl\sql :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    type PRESCRIPTIONREC is record(
    PR1 VARCHAR2(20),
    PR2 dpprescmedic.dpmdatval%type,
    PR3 uf.ufcrt%type,
    PR4 uf.ufcrt%type,
    PR5 VARCHAR2(500));
    function SSMPRESCRIPTION(dpprescmedic_dpmno in dpprescmedic.dpmno%type) return PRESCRIPTIONREC;
    J'aimerais savoir s'il est possible de récupérer ce "record" en java.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    	
    public PrescMedic (Database database, int noprescmedic) throws SQLException{
    		
    		int Result=0;
    		CallableStatement stmt = null;
    		
    		try{
    			stmt = database.db.prepareCall("begin :1 := SSMPRESCRIPTION(:2); end;");
    			stmt.registerOutParameter(1, ????????);
    		
    		
    		}
    	}
    Merci d'avance pour vos réponses...

    PS : Il parait que ça ne fonctionne pas sous Oracle8i mais que c'est possible sous 9i

  2. #2
    Membre expérimenté Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Points : 1 639
    Points
    1 639

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 23
    Points : 19
    Points
    19
    Par défaut
    Il ne s'aggit pas d'une procédure stockée mais d'une fonction.
    Il n'y a donc pas de paramètre en OUT.

    Mais j'imagine que le problème est le même si le paramètre en OUT est un record...

    D'autre part dans la faq le retour de la fonction est d'un type commun (INT, CHAR,...). Moi c'est un record composé de plusieurs champs.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 23
    Points : 19
    Points
    19
    Par défaut
    Voici ce que j'ai trouvé sur le site de oracle :



    Oracle's JDBC drivers support PL/SQL tables/result sets/records/booleans?

    No. It is not feasible for Oracle JDBC drivers to support calling arguments or return values of the PL/SQL types TABLE (now known as indexed-by tables), RESULT SET, RECORD, or BOOLEAN. There are currently no plans to change this. Instead people are encouraged to use RefCursor, Oracle Collections and Structured Object Types.

    As a workaround, you can create wrapper procedures that handle the data as types supported by JDBC.

    For example, to wrap a stored procedure that uses PL/SQL booleans, you can create a stored procedure that takes a character or number from JDBC and passes it to the original procedure as BOOLEAN, or, for an output parameter, accepts a BOOLEAN argument from the original procedure and passes it as a CHAR or NUMBER to JDBC. Similarly, to wrap a stored procedure that uses PL/SQL records, you can create a stored procedure that handles a record in its individual components (such as CHAR and NUMBER). To wrap a stored procedure that uses PL/SQL tables, you can break the data into components or perhaps use Oracle collection types.

    Here is an example of a PL/SQL wrapper procedure MY_PROC for a stored procedure PROC that takes a BOOLEAN as input:

    PROCEDURE MY_PROC (n NUMBER) IS
    BEGIN
    IF n=0
    THEN proc(false);
    ELSE proc(true);
    END IF;
    END;


    PROCEDURE PROC (b BOOLEAN) IS
    BEGIN
    ...
    END;


    Donc je vais devoir faire différement...

    Merci quand même

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

Discussions similaires

  1. Fonction qui retourne plusieurs valeurs !
    Par casafa dans le forum C++
    Réponses: 20
    Dernier message: 23/04/2014, 16h56
  2. fonction qui retourne des records
    Par r83 dans le forum PL/SQL
    Réponses: 4
    Dernier message: 17/04/2009, 23h35
  3. requête retournant résultat d'une fonction stockée
    Par schnock dans le forum Langage SQL
    Réponses: 2
    Dernier message: 23/01/2009, 14h36
  4. procédure ou fonction stockée qui retourne un résultat
    Par PoichOU dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 28/05/2007, 16h03
  5. Fonction qui retourne un record
    Par miomikio dans le forum Ada
    Réponses: 7
    Dernier message: 05/05/2007, 23h30

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