mysql存儲過程返回值_java如何获得mysql存储过程的返回值

delimiter//#存储过程newTitlecreateprocedurenewTitle(inpostNamevarchar(50),inuserIdint(8),incontenttext,inwriteTimedatetime,indownvarchar(50),inpicturevarchar(50),inbnvarc...

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+"',"+userId+",'"+content+"','"+time+"',null,null,'"+board+"','"+level+"','"+prefix+"',@tid)}";

try {

CallableStatement proc = conn.prepareCall(sql);

//proc.registerOutParameter(10, Types.INTEGER); 这是1楼的方法

//proc.execute();

ResultSet rs=proc.executeQuery();

int titleId=-1;

while(rs.next()){

titleId=proc.getInt(1);

}

request.getRequestDispatcher("ToPost?post="+titleId+"&child="+request.getParameter("child")+"&number="+

request.getParameter("number")+"&postNumber=1").forward(request,response);

} catch (SQLException e) {

// TODO Auto-generated catch block

PrintWriter out=response.getWriter();

out.println("存储过程错误:"+e.toString());

out.flush();

}

请问何解?

展开

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值