Caros amigos
Tenho um problema com um ResulSet que criei para obter dados de uma base de dados em oracle.
o ResulSet é o seguinte:
public java.sql.ResultSet getPrfs_ORASQL(){
try{
Class.forName("oracle.jdbc.driver.OracleDriver");
conn_insPROFPLSQL = DriverManager.getConnection("jdbc:oracle:thin:@RAGE:1521:BDNAME","USER","PASS");
CallableStatement cs_insPROFPLSQL= conn_insPROFPLSQL.prepareCall("{call OBTEM_PROFESSOR2()}");
return cs_insPROFPLSQL.executeQuery();
} catch(Exception e){
if (e.getMessage()!=null){
System.out.println(e.getClass().getName() + ":\n " + e.getMessage());}
return null;
}
}
este encontra-se num java.Bean com o nome bean_prof.
o Procedimento PL\SQL requerido pelo mesmo é o seguinte:
CREATE OR REPLACE PROCEDURE OBTEM_PROFESSOR2
IS
CURSOR GETPROF IS
SELECT ID_PROFESSOR, NOME_PROFESSOR
FROM PROFESSORES;
IN_IDPROFESSOR PROFESSORES.ID_PROFESSOR%type;
IN_NOMEPROFESSOR PROFESSORES.NOME_PROFESSOR%type;
TYPE T_PROF IS RECORD
(
TEMPIDPROFESSOR PROFESSORES.ID_PROFESSOR%type,
TEMPNOMEPROFESSOR PROFESSORES.NOME_PROFESSOR%type
);
PTEMP T_PROF;
VAR_CountRec INT;
BEGIN
SELECT
COUNT(*) INTO VAR_CountRec
FROM
PROFESSORES;
OPEN GETPROF;
LOOP
FETCH GETPROF INTO PTEMP;
EXIT WHEN GETPROF%NOTFOUND;
IN_IDPROFESSOR := PTEMP.TEMPIDPROFESSOR;
IN_NOMEPROFESSOR := PTEMP.TEMPNOMEPROFESSOR;
END LOOP;
CLOSE GETPROF;
END;
A pagina JSP que acede ao ResultSet fa-lo da seguinte forma:
if (BD==2){
java.sql.ResultSet X = BEAN_PROF.getPrfs_ORASQL();
int z=0;
while ( X.next() ) {
/*String aa = X.getArray(0);*/
String aa = X.getString(1);
String bb = X.getString(2);
%>
<option value=<%=aa %> ><%=bb%></option>
<%z++;
}
contudo nada é devolvido.
depois de fazer um debug à pagina a excepção retorna: "Não é possível efectuar extracções em instruções de PLSQL: next"
como resolvo?
sem mais, um abraço de Portugal