Help - Search - Member List - Calendar
Full Version: Manipuler Des Procédures Stockées En Java
OpenSpace > Zone Ordinateurs > Programmation
Ryle
Je m'arrache les cheveux depuis ce matin pour essayer d'exécuter des procédures stockées (ou plutôt des fonctions) depuis Java.
Procédures stockées dans une base Oracle 8i.
Exemple de fonction :

CODE
create or replace package types_alacon

   type cursorType is ref cursor;
end;
/  


create or replace function select_table_id (id_val NUMBER) return types_alacon
.cursortype as

   l_cursor types_alacon
.cursorType;
begin

OPEN l_cursor FOR
SELECT
table_id,
table_code,
table_libelle
FROM
Table
WHERE
table_id=id_val;


   return l_cursor;
end;


Mon code Java pour y accéder :

CODE
sql += "begin :1 := select_table_id ( :2 ); end;";
         connection = this.getConnection();

         statement = connection.prepareCall(sql);
         statement.registerOutParameter(1, OracleTypes.CURSOR);
         statement.setLong(2 , p_Id.longValue());
         
         
         resultSet = ((OracleCallableStatement)statement).getCursor(1);


Et l'erreur que me dégueule Tomcat :

CODE
org.apache.jasper.JasperException: org.apache.commons.dbcp.DelegatingCallableStatement
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:372)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

cause mère

java.lang.ClassCastException: org.apache.commons.dbcp.DelegatingCallableStatement
po.master.PoProfil.loadFromDb(PoProfil.java:86)
org.apache.jsp.JSP.sql_jsp._jspService(sql_jsp.java:62)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


D'après des test que j'ai effectué, le problème de classcast vient duf ait que l'objet statement est Null et que visiblement,l'appel de la fonction se fait mal ou pas.

Environnement : tomcat5/Eclipse

Voilà, si quelqu'un peut m'aider parce que là je dois en être à ma 300ème recherche google de la journée et à la visite de ma 462000ème page pour trouver une soluce.
Je sens que le serveur de l'INSA va passer par la fenêtre si ça continue.

Merci de l'attention que vous voudrez bien prêter à mon appel au secours.
Ryle
En cherchant comment on déclare une variable dans SQLPlus, je suis tombé là-dessus :

http://www.enterprisedt.com/publications/o...result_set.html

J'ai appliqué strictement le code Java et ça fonctionne !
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Invision Power Board © 2001-2024 Invision Power Services, Inc.