Jasper reports 在JasperReports服务器的JasperReports SQL查询中的IF-Else条件中使用SELECT语句

Jasper reports 在JasperReports服务器的JasperReports SQL查询中的IF-Else条件中使用SELECT语句,jasper-reports,jasperserver,Jasper Reports,Jasperserver,我有以下示例查询: 如果1=1 从Person中选择前10个* 其他的 从Id

我有以下示例查询:

如果1=1 从Person中选择前10个* 其他的 从Id<20的人员中选择前10名* 当我使用iReport创建带有上述查询的报表时,该报表工作正常

但是,当我将同一个报告上载到JasperReports服务器并尝试运行该报告时,它抛出了以下错误

ERROR Validator,report1 subreports #1:493 - Invalid SQL:An error has occurred. 
Please contact your system administrator. (6632), 
SQL: IF(1=1)Select  top 10 * from PersonELSESelect top 10 * from Person where Id < 20.
JasperReports服务器是否支持SELECT语句之外的IF..Else条件


有人知道这个错误吗

经过大约4天的搜索,我找到了一个解决方案

Jasper Server允许仅以SELECT关键字开头的SQL查询。因此,为了使其他查询能够工作,我们必须修改webapps/jasperserver/WEB-INF/classes/esapi/security-config.properties/validation.properties location中存在的Validator.ValidSQL正则表达式

我修改了这个正则表达式以支持“IF”条件,并使其工作

从jasper社区论坛获得此解决方案:


.

@AlexK感谢您的回复。起初我也这么认为,并验证了查询,发现它是正确的。现在,我甚至试着像我前面提到的那样只使用if条件,但这次我在“SQL:IF1=1selecttop10*fromperson”中遇到了相同的错误。当我使用SQL“IF1=1从Person中选择前10个*”测试场景时,我认为我上传的报告是错误的。所以现在我已经正确地编辑了这个问题。