java如何获得mysql存储过程的返回值

来源:百度知道 编辑:UC知道 时间:2024/05/23 23:20:30
delimiter //

#存储过程newTitle

create procedure newTitle(
in postName varchar(50),
in userId int(8),
in content text,
in writeTime datetime,
in down varchar(50),
in picture varchar(50),
in bn varchar(10),
in ln varchar(10),
in fn varchar(10),
out tid int)

begin

declare bid int;
declare lid int;
declare fid int;

SELECT max(id) into tid FROM title;
SELECT id into bid FROM boardname where board=bn;
SELECT id into lid FROM postlevel where level=ln;
SELECT id into fid FROM postprefix where prefix=fn;

insert into title values(tid+1,postName,bid,lid,fid,0);

call newPost(userId,content,writeTime,down,picture,tid+1);

end//

这个存储过程如何用java语句得到out tid int?
感谢各位的回答。可是我在调用的时候总是出格错误java.lang.ArrayIndexOutOfBoundsException
说是数组下标越界,可是怎么调试也不行,0都越界
String sql="{call newTitle('"+postName+"',"+use

cstmt.registerOutParameter(10, Types.INTEGER);//先声明输出参数System.out.println(cstmt.getInt(10));//用getXX取

try {
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
Connection conn= DriverManager.getConnection(url,user,password);
PrepareStatement p=conn.prepareStatement("{call newTitle('"+postName+...+fn"',@tid)}");
ResultSet rs=p.executeQuery();
while(rs.next()){
res=rs.getString(1);}
rs.close();p.close();conn.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return res;
主要是PrepareStatement p=conn.prepareStatement("{call newTitle('"+postName+...+fn"',@tid)}");这一句,得到值就很简单了,rs.getString(1)就可以得到返回值了!

你可以参考我博客里的一篇关于JAVA调用Oracle数据库存储过程的方法。
名称:Java(CallableStatement)调用Oracle存储过程返回结果集(ResultSet)
地址:java如何连接mysql MySQL中如何存储中文 java如何与mysql结合 Java如何获得屏幕分辨率? java mysql MYSQL存储图片 mysql存储过程 关于mysql存储过程 JAVA中如何获取MYSQL数据库系统的元数据? java 怎么连 mysql