如何调用MySQL中函数

    各位大神好!

        有个问题想请教一下,在使用Jfinal框架的时候遇到一个问题那就是MySQL中的函数,此函数并不是MySQL中的定义的参数等等,而是MySQL中的函数,跟存储过程差不多,就是多了一个return ,而这个return就是返回的值正是我们需要的,刚开始我以为跟存储过程的写法一个,但是我写好函数后再用调用存储过程的方法去调用并不可以。

        因为业务上的需求需要使用到MySQL中的递归查询,所以需要用到函数,但是不知道Jfinal中如何调用函数。请大神赐教。谢谢

评论区

JFinal

2017-08-28 12:09

用 Db.call(...) 方法即可,这里有些例子:
https://my.oschina.net/muduclark/blog/525805
https://www.oschina.net/question/1422291_247186

dear7575

2017-08-28 15:17

@JFinal 好像不行哦!


public class FunctionUtil implements ICallback {

Integer number;
CallableStatement proc = null;
public ResultSet rs = null;
public List result = null;

@Override
public Object call(Connection conn) throws SQLException {


try {

proc = conn.prepareCall("{ SELECT * FROM t_areainfo WHERE FIND_IN_SET(id,queryChildrenAreaInfo(?)) }");


//设置参数值
proc.setInt(1, number);
//加载
rs = proc.executeQuery();
result = (List) rs;
} catch (Exception e) {
e.printStackTrace();
} finally {
//执行
DbKit.getConfig().close(proc, conn);
}
return result;
}

public void CallFunction(Integer number) {
FunctionUtil functionUtil = new FunctionUtil();
functionUtil.number = number;
Db.execute(functionUtil);
}
}


SELECT * FROM t_areainfo WHERE FIND_IN_SET(id,queryChildrenAreaInfo(?))

这个是我在百度找的MySQL函数递归,而不是存储过程的递归!存储过程我知道怎么调用,但是函数这样调用应该行不通吧!存储过程使用 call Test这样的, 但是函数就不一样了!小弟不太明白啊!

dear7575

2017-09-01 12:54

@JFinal 搞定了!之前调用写了写法出现了错误!现在搞定了!谢谢波哥的耐心指导!

热门反馈

扫码入社