IN `_fields` varchar(200),IN `_table` varchar(50)
//这里面要注意,每个地方的空格都很重要,要不拼接起来的sql语句是错误的,现在没问题,用的时候 要注意调试
BEGIN
SET @strsql = CONCAT( //逗号都是在下一行,concat是拼接的意思
'select '
,_fields //参数,显示的列
,' from '
,_table //参数:表名
,CASE IFNULL(_where,'') //这里就可以自己加了,比如order by ;ground by
when '' then '' //如果_where为空,则后面接空
ELSE CONCAT(' where ',_where) END //否则接where语句
,' limit 0,2'
);
PREPARE strsql FROM @strsql; //预处理,把@strsql赋值给
EXECUTE strsql; //执行sql
END
java:
CallableStatement call=con.prepareCall("call q1('id,code,name,parentcode','t')"); //q1存储过程名,参数是在 ' ' 内,逗号分隔,是一个in参数,t是一个表名
boolean b=call.execute();
if(b){
ResultSet rs=call.getResultSet();
while(rs.next()){
int id=rs.getInt(1);
int code=rs.getInt(2);
String name=rs.getString(3);
int parentcode=rs.getInt(4);
//System.out.println(id+"\t"+code+"\t"+name+"\t"+parentcode);
}
b=call.getMoreResults();
}