亿信华辰文档中心 >> 计算前脚本执行sql情景案例 >> 历史版本
编辑时间历史版本内容长度图片数目录数修改原因
11-22 15:50 历史版本2 4329 1 4 调整页面
上一历史版本 | 最新历史版本 |   下一历史版本 | 返回词条

计算前脚本执行sql情景案例

目录

1. 需求

在计算报表模板前执行自定义的一段sql语句

2. 情景一

执行一段查询sql,且这段sql中用到报表模板的维下拉参数,参数可多选

脚本样例:

计算前脚本执行sql情景案例

import com.esen.jdbc.*;

import com.esen.platform.server.*;

import java.sql.ResultSet;

ConnectionFactory confac = EsenServer.getConnFactory("");

SqlExecuter executer = SqlExecuter.getInstance(confac);

try{

String sql = "select max(a.PRICE) as B1,max(a.NUM) as C1,max(a.SALES) as D1,a.ID as A1,max(a.NAME) as mc_A10 from ALLBOOK a where (";

String p_tsfl = params.getValue("@cs");

String[] p_tsfls = p_tsfl.split("|");

for(int i = 0; i < p_tsfls.length; i++){

 if(i == 0){

  sql += "a.ID like "" + p_tsfls[i] + "%"";

 }else{

  sql += " or a.ID like "" + p_tsfls[i] + "%"";

 }

}

sql += ") group by a.ID";

System.out.println("sql=" + sql);

ResultSet rs;

try{

 rs = (ResultSet)executer.executeSql(sql);

 while (rs.next()) {

  System.out.println(rs.getString(1) + " " + rs.getString(2) + " " + rs.getString(3) + " " + rs.getString(4) + " " + rs.getString(5));

 }

}finally{

 rs.close();

}

 

}finally{

  executer.close();

}

脚本中@cs是报表模板中参数的参数名称

 

3. 情景二

报表模板计算前执行一段更新sql(insert,delete,update等等)

脚本样例:

import com.esen.jdbc.*;

import com.esen.platform.server.*;

import java.sql.ResultSet;

ConnectionFactory confac = EsenServer.getConnFactory("");

SqlExecuter executer = SqlExecuter.getInstance(confac);

try{

String sql = "insert into AUGE_TOTALINFO (farendma, baobleix, jiaoyirq, bbjigouh, zongzquj, baobbizh, kemuhaoo, bnbwbioz, kemujibi, kemumnch, bwbzhong, jibzhsbs, mocekmbz, sqjiefye, sqdaifye, bqjffshe, bqdffshe, bqijfyue, bqidfyue, bqjfbish, bqdfbish, xjjfbish, xjdfbish, xjjffshe, xjdffshe, zzjfbish, zzdfbish, zzjffshe, zzdffshe, weihguiy, weihjigo, weihriqi, shijchuo, jiluztai, ods_timestamp, ysqjiefye, ysqdaifye, ybqjffshe, ybqdffshe, ybqijfyue, ybqidfyue) values ("9999", "1", "20170602", "1010", "0", "01", "660208", "0", 2, "差旅费", "01", "1", "1", 1237.33, 0, 0, 0, 1237.33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1237.33, 0, "B99991", "0000", "20170320", 1492785609043, "0", to_timestamp("22-06-2017 17:24:06.000000", "dd-mm-yyyy hh24:mi:ss.ff"), null, null, 0, 0, null, null)";

System.out.println("sql=" + sql);

executer.executeSql(sql);

 

}finally{

  executer.close();

}

4. 情景三

计算前脚本调用存储过程

 

import com.esen.jdbc.*;

import com.esen.platform.server.*;

import java.sql.ResultSet;

ConnectionFactory confac = EsenServer.getConnFactory("");

SqlExecuter executer = SqlExecuter.getInstance(confac);

 

 

try{

//传参情况,@p1是参数名,p_test2_copy是存储过程名

String p1 = params.getValue("@p1");

    exe.executeSql("{call p_test2_copy('1','"+p1+"')}");

//不传参情况

//  exe.executeSql("{call p_test2_copy()}");

//p_test2_copy是存储过程名称

 

}finally{

  executer.close();

}

标签