1.概述
在表单调用脚本时,有些情况下后端数据计算比较复杂,需要使用存储过程进行计算。下面我们使用一个简单的例子来实现存储过程的调用。
2.实现过程
2.1 编写存储过程
在表单的数据库中创建存储过程。
CREATE PROCEDURE `proc_addNum`(in x int,in y int,out sum int,out sum2 int)
BEGIN
SET sum= x + y;
set sum2 =x +10;
end
这个存储过程很简单,就是实现两个数据相加,并返回。
2.2 添加数据源
我们需要在子系统中添加一个指向表单的数据源。
2.3 添加定制脚本
存储过程调用方法如下:
http://doc.redxun.cn/docs/jpaas/callprocedure
编写脚本如下:
import com.redxun.db.process.*;
import com.mysql.cj.MysqlType;
import com.redxun.common.utils.SpringUtil;
import com.alibaba.fastjson.JSONObject;
import java.util.List;
import java.sql.CallableStatement;
import java.sql.SQLException;
ProcedureHepler procedureHepler=SpringUtil.getBean(ProcedureHepler.class);
ParameterHelper helper=new ParameterHelper();
//增加输入参数
helper.addInParameter(ParameterType.INT,params.A)
.addInParameter(ParameterType.INT,params.B)
//添加输入参数
.addOutParameter(MysqlType.FIELD_TYPE_INT24)
.addOutParameter(MysqlType.FIELD_TYPE_INT24);
List<ProcParameter> parameterList = helper.getParameterList();
Integer rtn= (Integer) procedureHepler.callProc("form", "proc_addNum", parameterList, new IReturnData() {
//处理返回值
@Override
public Object handStatement(CallableStatement statement) throws SQLException {
Integer rtn= statement.getInt(3);
return rtn;
}
});
return rtn;
2.4 添加表单
我们需要做的是将A 和 B进行相加得到的结果填入到C。
在JS添加脚本如下:
var custFuntions=[{
name:"calcform",
action:function(){
this.invokeScript("callProc",{"A":this.data.A,"B":this.data.B},(data)=>{
this.data.C=data.data;
});
}
}];
测试如下:
文档更新时间: 2021-07-09 14:31 作者:zyg