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;
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);
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)
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.