2011-09-20 75 views
0

我们如何从MySQL存储过程(例程)返回游标。或者另一种将值列表从MySQL Proc返回给Java程序的方法。我们试图在Oracle中实现与Sys Ref Cursor类似的功能,并且看起来像MySQL中有类似的东西。但是,想知道这是一个非常常见的用例,应该如何获取由mysql中的proc返回的值列表。在MySQL中返回游标

版本 - 的MySQL服务器5.5.15

回答

0

“返回值列表返回到Java程序”。 MySql(和Connector/J)支持存储过程的多个输出参数。如果这不是你想要的,并且你想要一个结果集,你可以在你的存储过程中做一个SELECT,并且这个SP返回一个结果集,你可以用CallableStatement.executeQuery()读取数据。例如:

3

MySQL:

create procedure get_data(in param1 date) 
begin 
select * from mytable where mydate=param1; 
end; 

的Java:

CallableStatement cstmt = MyConnection.prepareCall("{call mydb.get_data(?)}"); 
cstmt.setString(1, '2012-01-01'); 
ResultSet rs = cstmt.executeQuery(); 
int nF = rs.getMetaData().getColumnCount(); 
rs.last(); 
String[][] out = new String[rs.getRow()][nF]; 

for (int i=0; i<nF; i++) { 
    rs.beforeFirst(); 
    int n=0; 
    while (rs.next()) { 
    out[n][i]=rs.getString(i+1); 
    n++; 
    } 
} 

cstmt.close(); 
return out;