日期:2014-05-18  浏览次数:20641 次

java怎么得到存储过程的返回值?
use test 
go 
create procedure sp_compute 
as 
select goodsQuantity,memberId from goods where goodsQuantity>10 order by memberId compute sum(goodsQuantity) by memberId 
go 
以上是我的存储过程,我怎么读取它的值?
该存储过程执行结果如图:http://sfq1984.cn/images/123.JPG

------解决方案--------------------

------解决方案--------------------
这个应该用到 游标 吧。
------解决方案--------------------
看API,connection类的prepareCall()
------解决方案--------------------
没有简单的demo例子你看下下面这个吧,可以考虑用这个或者把代码扒出来。

http://blog.csdn.net/sunyujia/archive/2008/05/18/2456325.aspx
------解决方案--------------------
你写好存储过程,在java里调用阿
------解决方案--------------------
Connection con;
CallableStatement cs;
ResultSet rs;


Arraylist list = new ArrayList();
String sql= {call sp_compute (?,?,?)};

建立连接
c处理sql语句
.......
执行用rs接受
whlie(rs.Next()){

实例化一个javabean对象
list.add(....);

}

值保存在Arraylist对象中


我刚学jsp,我机器上没有编译器,写得不好,还可能有些错误....请原料
------解决方案--------------------
没用框架的话.就差不多是楼上那样了,用hibernate的话用createSQLquery,session.createSQLQuery("Call 存储工程名(?,?)")返回list
------解决方案--------------------
写一个包,申明一个游标A,包体里的存储过程用游标A打开select goodsQuantity,memberId from goods where goodsQuantity>10 order by memberId compute sum(goodsQuantity) by memberId ,返回这个游标A。
或者,你把这在存储过程里直接用游标循环,把所有内容拼成一个字符串,一条记录中的字段用“,”隔开,记录之间用“+”隔开这种形式,varchar2不够可以用Long返回,到java里去解析这个Long的内容。
------解决方案--------------------
CallableStatement
------解决方案--------------------
exex 变量=返回值,变量=返回值 sp_compute 
上面是SQL 

 如果在java里面就用到 参数占位符

参数... 网上有很多资料