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 :

Passer un UDT en paramètre d'une procédure stockée


Sujet :

JDBC Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Août 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 11
    Points : 9
    Points
    9
    Par défaut Passer un UDT en paramètre d'une procédure stockée
    Bonjour,

    Depuis mon programme Java, je souhaite pouvoir passer une classe à une procédure stockée PL/SQL.
    Je me suis inspiré de cet exemple .

    Ma classe main
    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
     
    public class Main {
        public static void main(String args[]) throws ClassNotFoundException {
     
            java.sql.Connection conn = null;
            try {
                conn = JDBCUtil.getDBConnection();
                CallableStatement statement;
                String sql;
                Array array;
     
     
    //          mise en place du mapping
                java.util.Map map = conn.getTypeMap();
                map.put("SchemaName.PERSONNE", Class.forName("Personne"));
                conn.setTypeMap(map);
     
                Personne perso = new Personne();
                perso.setAge(44);
                perso.setNom("Toto");
                perso.setPrenom("Titi");
     
                sql = "{? = call PK_BDUWS_RNCPS.COLLECT_DCP(?)}";
    			System.out.println("\n"+sql);
    			statement = conn.prepareCall(sql);
    			statement.registerOutParameter(1, Types.ARRAY, "T_RESULTAT_UNIT_TAB");
    			statement.setObject(2, perso);
     
    			statement.execute();
    			array = statement.getArray(1);
    			ArrayList<ResultatUnit> lst;
    			try {
    				lst = mapResultatUnitTab(array);
    			} catch (Exception e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
     
    			statement.close();
     
            } catch(SQLException s) {
                System.out.println(s);
            } finally {
                if(conn != null) {
                    try {
                        conn.close();
                    } catch(SQLException ignore) {}
                }
            }
        }
    Et lorsque je l’exécute, j'obtiens ceci :
    {? = call PK_BDUWS_RNCPS.COLLECT_DCP(?)}
    java.sql.SQLException: Echec de construction du descripteur: Invalid arguments
    Avez vous une idée de ce qui pose problème ?

    Merci pour votre aide

    Korno

  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
    Ta classe Personne est identique à celle de la FAQ ? (implements SQLData)

    Ta table PERSONNE est dans le schema SchemaName ?

    Tu peux montrer la signature de ta fonction PL/SQL ?

  3. #3
    Futur Membre du Club
    Inscrit en
    Août 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 11
    Points : 9
    Points
    9
    Par défaut
    Merci pour ta réponse.
    J'ai résolu mon problème en passant les attributs de ma classe un par un à la procédure stockée.

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 09/12/2008, 10h04
  2. Passer un curseur en paramètre d'une procédure
    Par tommy_f dans le forum Forms
    Réponses: 4
    Dernier message: 13/05/2008, 16h54
  3. Réponses: 2
    Dernier message: 03/12/2006, 12h37
  4. Passer le nom de colonne en paramètre d'une procédure stocké
    Par theartist dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 04/01/2005, 15h39

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