存储过程代码如下:
create or replace package mysp is
  type refcursor is ref cursor return MEIGARA_INFO2%ROWTYPE;
  procedure  mytest(mycur in OUT refcursor);
end mysp;create or replace package body mysp is
  procedure  mytest(mycur in OUT refcursor)IS
    begin    
    open mycur for       
        SELECT *   FROM MYTABLE;  
  end mytest;
end mysp;/////////////////////////////////////////
jsp如下:
<%@ page contentType="text/html; charset="SHIFT_JIS""%> 
<%@ page language="java"  import="java.sql.*,java.io.*,javax.naming.*,javax.sql.*,java.lang.*,java.util.*,java.text.*" %>
<html>
<body>
<%
String sta;
String sql = "{call mysp.mytest(?)}";
try
{
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
    String url="jdbc:oracle:thin:@202.118.44.105:1521:SVER";
    String user="MY"; 
    String password="MY";
    Connection conn = DriverManager.getConnection(url,user,password); 
CallableStatement  mycs = conn.prepareCall(sql);
mycs.registerOutParameter(1,Types.OTHER);
mycs.execute();              ResultSet rs = (ResultSet)mycs.getObject(1);
while(rs.next()){
sta = rs.getString(1);
out.println(" status is :" +sta);
}
mycs.close();
rs.close();
conn.close();
}
catch (Exception e)
{
out.print(e);
}
%>
这段代码有问题麽,怎么老是不对呢?请大家帮忙看看。

解决方案 »

  1.   

    告诉你一种最好的方法就是直接用ORACLE提供的API
    private static oracle.jdbc.OracleCallableStatement  call = null;
    call = (oracle.jdbc.OracleCallableStatement)conn.prepareCall("{call mytest.zhbtest(?,?)}");
    call.setString(1, "4050608006");
    call.registerOutParameter(2,oracle.jdbc.OracleTypes.CURSOR);
    rs = call.getCursor(2);
    while(rs.next()){
            System.out.println(rs.getString(1));
                  }存储过程返回游标.
      

  2.   

    楼上非常感谢你,给我提供了一种思路,但是,在jsp里面如何使用呢?