diff --git a/ureport2-console/src/main/java/com/bstek/ureport/console/designer/DatasourceServletAction.java b/ureport2-console/src/main/java/com/bstek/ureport/console/designer/DatasourceServletAction.java index fe073a5..582bd6e 100644 --- a/ureport2-console/src/main/java/com/bstek/ureport/console/designer/DatasourceServletAction.java +++ b/ureport2-console/src/main/java/com/bstek/ureport/console/designer/DatasourceServletAction.java @@ -175,7 +175,7 @@ public class DatasourceServletAction extends RenderPageServletAction { conn=buildConnection(req); Map map = buildParameters(parameters); sql=parseSql(sql, map); - if(sql.trim().toLowerCase().startsWith("call ")){ + if(ProcedureUtils.isProcedure(sql)){ List fieldsList = ProcedureUtils.procedureColumnsQuery(sql, map, conn); fields.addAll(fieldsList); }else{ @@ -227,7 +227,7 @@ public class DatasourceServletAction extends RenderPageServletAction { try{ conn=buildConnection(req); List> list=null; - if(sql.trim().toLowerCase().startsWith("call ")){ + if(ProcedureUtils.isProcedure(sql)){ list=ProcedureUtils.procedureQuery(sql, map, conn); }else{ DataSource dataSource=new SingleConnectionDataSource(conn,false); diff --git a/ureport2-core/src/main/java/com/bstek/ureport/definition/dataset/SqlDatasetDefinition.java b/ureport2-core/src/main/java/com/bstek/ureport/definition/dataset/SqlDatasetDefinition.java index 68ea82b..5f55917 100644 --- a/ureport2-core/src/main/java/com/bstek/ureport/definition/dataset/SqlDatasetDefinition.java +++ b/ureport2-core/src/main/java/com/bstek/ureport/definition/dataset/SqlDatasetDefinition.java @@ -65,7 +65,7 @@ public class SqlDatasetDefinition implements DatasetDefinition { } Utils.logToConsole("RUNTIME SQL:"+sqlForUse); Map pmap = buildParameters(parameterMap); - if(sqlForUse.trim().toLowerCase().startsWith("call ")){ + if(ProcedureUtils.isProcedure(sqlForUse)){ List> result = ProcedureUtils.procedureQuery(sqlForUse,pmap,conn); return new Dataset(name,result); } diff --git a/ureport2-core/src/main/java/com/bstek/ureport/utils/ProcedureUtils.java b/ureport2-core/src/main/java/com/bstek/ureport/utils/ProcedureUtils.java index 631edd0..e4822cd 100644 --- a/ureport2-core/src/main/java/com/bstek/ureport/utils/ProcedureUtils.java +++ b/ureport2-core/src/main/java/com/bstek/ureport/utils/ProcedureUtils.java @@ -36,6 +36,11 @@ import com.bstek.ureport.exception.ReportException; * @since 2017年12月27日 */ public class ProcedureUtils { + public static boolean isProcedure(String sql){ + sql=sql.trim().toLowerCase(); + return sql.startsWith("call "); + } + public static List procedureColumnsQuery(String sql,Map pmap,Connection conn){ CallableStatement cs=buildProcedureCallableStatement(sql, pmap, conn); ResultSet rs=null;