参考一下 <%-- 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);
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,希望有帮助
<%-- 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>
我如果调用getObject(1)方法,可是改Object是Oracle Collection 对象阿,怎么在java里引用???