- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2013自定义函数实现润乾报表call函数功能
自定义函数实现报表call函数功能关键字:自定义 增强 函数 call 存储过程使用前注意由于增强函数是授权控制的功能点,所以这种在简单版本下实现增强函数的功能请慎用。本文介绍的方式适用于客户开发时使用的全功能临时授权,而正式购买的版本中无增强函数,销售要求在现有版本上实现增强函数的功能。使用时可根据实际情况适当采用。问题背景某客户购买的报表开发版(无增强套件),而他们在开发报表阶段使用的是全功能临时授权,报表中使用了大量的call query seq等增强函数,正式上线时发现报表不可用,提示使用了增强函数。客户处已无预算增购增强套件,销售要求在现有版本上实现报表call函数等功能。问题分析报表call函数的作用是调用存储过程,并将输出参数返回给报表。可以通过自定义函数,在程序里调用存储过程,并将输出参数作为自定义函数的返回值返回给报表。所以在自定义函数中要实现如下几块功能:解析自定义函数中的传递的报表表达式参数,如:A1;根据相应参数调用存储过程并接收存储过程输出参数;将输出参数值返回具体实现自定义函数名:callProcedure,参数:存储过程名,输入参数接收参数,并解析// 取得第一个参数,默认为表达式,需要把该表达式算出来,结果才是函数的参数值Expression param1 = (Expression) this.paramList.get(0);Expression param2 = (Expression) this.paramList.get(1);// 算出参数值Object result1 = Variant2.getValue(param1.calculate(ctx, isInput),false, isInput);Object result2 = Variant2.getValue(param2.calculate(ctx, isInput),false, isInput);调用存储过程//获取ctx中保存的连接工厂连接conn = ctx.getConnectionFactory(mysqlProc).getConnection();//调用存储过程cstmt = conn.prepareCall({call +procName+(?,?)});cstmt.setString(1, inParam);//设置第一个输入参数值cstmt.registerOutParameter(2, Types.VARCHAR);//将 OUT 参数注册为 JDBC 类型 sqlTypecstmt.execute();outParam = cstmt.getString(2);//接收输出参数的值将输出参数值返回给报表return outParam;//函数返回值源程序:mysql存储过程create procedure nameProc(in id varchar(10),out name varchar(50))beginset name =CONCAT(id,aaa);end自定义函数CallProcedure.javapackage customFunction;import java.sql.CallableStatement;import java.sql.Connection;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.sql.Types;import com.runqian.base4.resources.EngineMessage;import com.runqian.base4.resources.MessageManager;import com.runqian.base4.util.ReportError;import com.runqian.report4.model.expression.Expression;import com.runqian.report4.model.expression.Function;import com.runqian.report4.model.expression.Variant2;import com.runqian.report4.usermodel.Context;public class CallProcedure extends Function{public Object calculate(Context ctx, boolean isInput) {/** * 计算报表参数 *///判断参数个数if (this.paramList.size() 1) {MessageManager mm =
文档评论(0)