Merci à tous les deux. Du coup, j'ai fait une fonction et une procédure qui récupèrent deux lignes grâce à vos informations. Je vais mettre un petit résumé des codes si il y a des personnes qui ont le même problème :
NOTE:
Dans la partie java, je fais une itération et je rajoute les valeurs au fur et à mesure dans une variable de type String (f pour fonction et p pour procédure). Pour information, ce code correspond à des tests donc ne soyez pas choqué du fait des noms des variables.
-------------COTE FONCTION-----------------
PARTIE PL/SQL :
1 2 3 4 5 6 7 8
|
create or replace
function lolaget return sys_refcursor is
ls sys_refcursor;
begin
OPEN LS FOR SELECT nom||' '||prenom FROM LOLATEST;
return LS;
end lolaget; |
RECUPERATION VIA JAVA:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
String f = "";
String ordreSQL = "{? = call lolaget()}";
CallableStatement stmt = conn.prepareCall(ordreSQL);
// Affectation de valeurs pour les champs paramétrables
stmt.registerOutParameter(1, OracleTypes.CURSOR);
stmt.execute();
ResultSet rs = (ResultSet) stmt.getObject(1);
while(rs.next())
{
f = f + "<br/>"+rs.getString(1);
}
stmt.close(); |
-------------COTE PROCEDURE-----------------
PARTIE PL/SQL :
1 2 3 4 5 6
|
create or replace
procedure LOLAGETP (ls out sys_refcursor) AS
begin
OPEN ls FOR SELECT prenom||' '||nom FROM LOLATEST;
end; |
RECUPERATION VIA JAVA:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
String p = "";
String ordreSQLB = "BEGIN LOLAGETP(?); END;";
CallableStatement stmtB = conn.prepareCall(ordreSQLB);
// Affectation de valeurs pour les champs paramétrables
stmtB.registerOutParameter(1,OracleTypes.CURSOR);
stmtB.execute();
ResultSet rsB = (ResultSet) stmtB.getObject(1);
while(rsB.next())
{
p = p + "<br/>"+rsB.getString(1);
}
stmtB.close(); |
En tout cas merci pour les informations et n'hésitez pas à donner vos avis si c'est simplifiable.
Partager