Bonjour,
J'ai voulu créer un programme java à partir duquel je récupére le contenu d'une table qui a 3 colonne (de types différents). Dans la fonction oracle j'ai réussi à extraire les données en créant des types et en utilisant un pipeline. Malheuresement, je n'arrive pas à récupérer ces données sur oracle, je ne sais pas le type à déclarer dans output, j'ai essayé, un array, un objet... un cursor mais ça renvoie toujours des erreurs.
Ci-après le code oracle
Voici le code Java
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 create or replace FUNCTION GET_STATEMENT (wmsisdn in VARCHAR2, accountnbr in VARCHAR2) RETURN LMVTS PIPELINED AS MOUVEMENT LMVTS; PDATOPER DATE; PLIBELLE VARCHAR(20); PMNTDEV NUMBER; MyCounter number; CURSOR C1 IS select datoper,substr(libelle,1,20),mntdev from STATEMENT s where s.compte = accountnbr and s.msisdn = wmsisdn; BEGIN OPEN C1; LOOP FETCH C1 INTO PDATOPER, PLIBELLE,PMNTDEV; Exit when C1%NOTFOUND ; PIPE ROW (MVT(PDATOPER, PLIBELLE,PMNTDEV)); END LOOP; CLOSE C1 ; -- RETURN MOUVEMENT; -- EXCEPTION WHEN NO_DATA_FOUND THEN RETURN (NULL); END GET_STATEMENT;
Ici, l'affichage du console
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 void ministatement(Connection Conn,String wmsisdn, String account){ try { String sql1= "{?= call GET_STATEMENT(?,?)}"; CallableStatement Stat = Conn.prepareCall(sql1); Stat.registerOutParameter(1,oracle.jdbc.OracleTypes.CURSOR); Stat.setString(2,wmsisdn); Stat.setString(3,account); Stat.execute(); ResultSet resultat = Stat.getResultSet(); System.out.println(resultat); } catch(Exception e){e.printStackTrace();} }
Je vous remercie pour votre aide.java.sql.SQLException: ORA-06550: line 1, column 10:
PLS-00653: aggregate/table functions are not allowed in PL/SQL scope
ORA-06550: line 1, column 13:
PLS-00382: expression is of wrong type
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
Christian
Partager