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();
}
请问何解?
展开