问一个servlet和存储过程返回值问题,会的请回答,不会的捧个场。

sunnyrain8 2001-10-26 10:06:14
我现在用servlet用jdbc读取存储过程。但产生了一个问题,call.excute后用call.get方法得到一个返回参数,然而再想取得resultset就不行了。不知是为什么?有明白的吗?
应该怎么进行,不能执行两次excute吧
...全文
110 点赞 收藏 6
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
czb 2001-10-26
SUN推荐先取resultset,再取返回值,为什么就要问SUN了。
回复
sunnyrain8 2001-10-26
谢谢,给分吧。路人甲那边已经给了吧?
回复
skyyoung 2001-10-26
Stored procedure with Input/Output parms and a ResultSet
Thanks to T. Guirado for the tips. public static int storedProcWithResultSet (String parms) throws Exception
// Stored procedure to be called.
CallableStatement cs = conn.prepareCall
("{? = call mypackage.p_astoreproc (?,?,?,?,?,?,?)}");

// register input parameters
cs.registerOutParameter(1, java.sql.Types.INTEGER); // return code
cs.setString(2, "");
cs.setString(3, "");
cs.setString(4, parms);
// regsiter ouput parameters
cs.registerOutParameter(5, java.sql.Types.CHAR);
cs.registerOutParameter(6, java.sql.Types.CHAR);
cs.registerOutParameter(7, java.sql.Types.CHAR);

// Procedure execution
ResultSet rs = cs.executeQuery();

// Note that you need to retrieve the ResultSet _before_ retrieving
// OUTPUT parameters.
if ( rs == null)
System.out.println( "No resultSet!");
else {
// To retrieve columns info.
ResultSetMetaData rsmd = rs.getMetaData();
int nbCol = rsmd.getColumnCount();

int i = 0;
int j = 1;

Vector vResSet = new Vector();
while (rs.next ()) {
System.out.println( "Record " + (i+1));
// putting the ResultSet columns in a vector
for ( j = 1; j <= nbCol ; j++){
vResSet.insertElementAt(rs.getString(j), 0);
vResSet.addElement(rs.getString(j));
}

// Reading vector to print ResultSet data
for ( int k = 0 ; k < nbColonnes ; k++ ) {
if ( vResSet.elementAt(k) != null)
System.out.println( vResSet.elementAt(k).toString());
else
System.out.println( "Column " + (k+1) + " Null");
}
i++;
}
}

// Retrieving Strored Procedure OUTPUT parameters
System.out.println( "return code of Stored procedure = : " + cs.getInt(1));

// Retrieving OUTPUT parameters
for ( int i = 5 ; i <= 7; i ++)
System.out.println( "parameter " + i + " : " + cs.getString(i));

return cs.getInt(1);
}

回复
sunnyrain8 2001-10-26
如果想多次取出ResultSet,游标只能向前吗?好像有一个first(),不知做什么用的?
回复
czb 2001-10-26
先取resultset,再取返回值,行不行我也没有实践过 :)
resultset只能用一次?什么意思,如果你的结果集不能滚动,当然只能用一次拉,要不你就把结果集取出来放到一个Vector对象里。
回复
sunnyrain8 2001-10-26
to czb(草中宝) :
我试了一下,好像还是不行。而且在resultset只能用一次?反正只能取一个,取另一个就不行了,不知是否是这样,谢谢!
回复
相关推荐
发帖
Web 开发
创建于2007-09-28

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2001-10-26 10:06
社区公告
暂无公告