1.需求背景
跑批任务往往需要传递简单的参数,多个SQL一起执行,输出结果到一个结果表中。中间的过程不需要经过Magic服务,直接数据库完成数据处理。默认情况下Magic-api每次只能执行一条SQL语句,这个处理函数就帮助方便执行多SQL。
2.实现方式
通过传递的SQL块,拆分成多个SQL,循环执行。
import log;
import java.util.regex.Pattern;
var sql_list = sqlscript.split(";");
var regx = /^(create|drop|update|insert|alter|rename|delete|truncate)/
sql_list.each(sql=>{
tmp_sql = sql.replace('\n','').replace('\r','').replace('\t','').replace(' ','')
if(regx.test(tmp_sql.toLowerCase())){
String patern = "\\#\\{([^}]*)\\}";
Pattern pattern = Pattern.compile(patern);
Matcher matcher = pattern.matcher(sql);
while (matcher.find()) {
//log.info(matcher.group());
if (params && !params.get(0)[matcher.group()::string.replace("#{",