test_proc(p_MyTable OUT EqpInfo_Table).
其中的p_MyTable 参数就可以返回结果啊,怎么可说没有返回值!

解决方案 »

  1.   

    public Connection memCn=null;
    private CallableStatement memCallSt=null;
     memCallSt=memCn.prepareCall(memSql);
    memCallSt.setString(2,strVal);
     memCallSt.registerOutParameter(1,Types.INTEGER);
    boolean result=memCallSt.execute();
    int temp=memCallSt.getInt(1);
    我这个存储过程两个参数,第一个是int的out,第二个是 in的string,希望有帮助
      

  2.   

    楼上的方法我知道,问题是我要返回的是一个我自己定义的一个TYPE(索引表),并非一个String那么简单啊。
      

  3.   

    参考一下
    <%-- testoraproc.jsp --%>
    <%--
    CREATE OR REPLACE PACKAGE Types AS 
       TYPE cursor_type IS REF CURSOR;
    END Types; 
    / CREATE OR REPLACE PROCEDURE GetEmpRS (p_deptno    IN  emp.deptno%TYPE,
    p_recordset OUT Types.cursor_type) AS 
    BEGIN 
       OPEN p_recordset FOR
         SELECT ename,
                empno,
                   deptno
         FROM   emp
         WHERE  deptno = p_deptno
         ORDER BY ename;
    END GetEmpRS;
    /
    --%>
    <%@ page
    language="java"
    import="java.sql.*,oracle.jdbc.driver.*"
        contentType="text/html;charset=gb2312"
    %>
    <html>
    <body>
    <table border="1">
    <%
    String driver = "oracle.jdbc.driver.OracleDriver";
    String url = "jdbc:oracle:thin:@localhost:1521:oradb";
    String user = "scott";
    String password = "tiger";
    Class.forName(driver); Connection conn = DriverManager.getConnection(url, user, password);

    CallableStatement cstmt = conn.prepareCall("{call GetEmpRS(?, ?)}");
    cstmt.setInt(1, 30); // DEPTNO
    cstmt.registerOutParameter(2, OracleTypes.CURSOR); //REF CURSOR
    cstmt.execute();
    ResultSet rs = ((OracleCallableStatement) cstmt).getCursor(2);
    // ResultSet rs = (ResultSet) cstmt.getObject(2);
    ResultSetMetaData rsmd = rs.getMetaData();
    int numberOfColumns = rsmd.getColumnCount();
    %>
      <tr>
    <%
    for (int i = 0; i < numberOfColumns; i++)
    {
    %>
    <th><%= rsmd.getColumnName(i + 1) %></th>
    <%
    }
    %>
      </tr>
    <%
    while (rs.next())
    {
    %>
      <tr>
    <%
    for (int i = 0; i < numberOfColumns; i++)
    {
    %>
        <td><%= rs.getString(i + 1) %></td>
    <%
    }
    %>
      </tr>
    <%
    }
    %>
    </table>
    <%
    rs.close();
    cstmt.close();
    conn.close();
    %>
    </body>
    </html>
      

  4.   

    楼上的方法我也知道,其实我现在就是不知道如何把Oracle的Colllection对象转化为java对象。
    我如果调用getObject(1)方法,可是改Object是Oracle Collection 对象阿,怎么在java里引用???
      

  5.   

    照liad()的方法,我解决了,可以得到游标参数的值了!
      

  6.   

    能不能用getObject(1)的办法,在java里定义一个跟你的type一样的class,然后再转换,看行不行啊