EAS扩展报表数据集执行常见报错及解决方案

栏目:eas cloud知识作者:金蝶来源:金蝶云社区发布:2024-09-22浏览:1

EAS扩展报表数据集执行常见报错及解决方案

客户端制作扩展报表数据集时,有时会因为一些语法或数据库差异导致查询报错,导致报错的可能原因大概有以下原因,可参考进行问题分析排查。 1.使用with关键字 对于客户使用SQL Server数据库时,偶尔会碰到一些奇怪的问题,在其他类型数据库可以正常执行的SQL数据集,同样的SQL在SQL Server数据库执行却报错。 如:WITH TEMP AS(SELECT * FROM TableA) SELECT * FROM TEMP; 该种语法在工具连接SQL Server数据库时可正常执行。 ![sqlserver01.webp](/download/01006bb1bdc510494c94b9ae5b492550b8c8.webp) 客户端连接SQL Server数据库执行数据集会报错, ![sqlserver02.webp](/download/0100dda1bed6a81c4fa98d09b554117d615b.webp) ![sqlserver03.webp](/download/010099788f026e154cd7abb89999f844107c.webp) 报错原因分析:报表调用引擎执行取数sql时,引擎接口做了一些分页等其他操作后在源sql外层包装了一些select查询语句,导致with语句部分被作为了子查询,而SQL Server数据库不支持with作为子查询,故执行会报上面截图错误。 ![sqlserver04.webp](/download/010027025685915f417084d24a13cc90d50d.webp) SQL Server工具中执行with子查询也会执行报错。 ![sqlserver05.webp](/download/010045f40646f2744c548259b0c844264252.webp) 建议:客户端连接SQL Server数据库时,避免使用with语法,Oracle、PostgreSQL数据库可以正常使用。 2.union和union all关键字 客户端连接PostgreSQL数据库时,使用union或者union all拼接多段select查询时报错。 ![pg01.webp](/download/010089e20dc6d86844aaa7e9e730a0a7781c.webp) 错误原因分析:报表在检查sql语法的正确性时,会在每一个select语句中增加top关键字进行语法校验,引擎后面在做sql解析时,会根据数据库类型做分页处理,如转成limit语句,由于报表在多个select中都加了top关键字,导致引擎截取的时候只从最后一个limit截取,sql就会不完整,执行报错。 ![pg02.webp](/download/010007c580cacb064a6fa99703ce1a0ce1a0.webp) 解决方案:报表优化处理sql的代码,对于多个select使用union或union all时,在最外层包装top检验语法,避免出现多个top影响引擎解析sql,如select top n * from (select fnumber from a union all select fnumber from b )。 |版本|领域|补丁号| |-|-|-| |EAS861|报表中心|PT167299| 3.存储过程数据集执行没有数据 部分客户EAS800升级到EAS861之后,存储过程数据集执行后没有数据,EAS820执行有数据。 问题分析:打开扩展报表控制台查看sql执行情况。 ![存储过程01.webp](/download/0100850a59895818459d9d1ee557efe8e002.webp) ![存储过程02.webp](/download/0100990bbfc789954fd7afb8e8b3ea2635c4.webp) 通过控制台日志发现,数据集部分参数不选参数值时,最终绑定的存储过程数据集参数却拼接了=null的参数值,导致最终执行存储过程时没有数据展示。 调试代码发现,没有选择参数值的参数,在设置参数值的时候都设置了null,在预编译的时候通过prepareStatement.setNull(i,sqlType)是会处理成param = null,导致没有数据。 解决方案:EAS861更新补丁解决。 |版本|领域|补丁号| |-|-|-| |EAS861|报表中心|PT168788| 4.PostgreSQL数据库中数据集执行报错 客户端连接PostgreSQL数据库时,点击宏定义或数据集参数引用宏时,点击详细设置按钮报错。 ![宏01.webp](/download/0100d63280351b34489e84c9e184ac527767.webp) ![宏02.webp](/download/0100eb4b6b501eb647209443cea8ccd592b5.webp) 原因分析:PostgreSQL中,新增宏定义时,由于宏描述字段为非必填字段(查看表结构NULLABLE=TRUE),用户没有填写该字段时,可正常进行保存,当再次编辑时,引擎序列化该字段时,由于字段长度为0,因此代码执行会抛出以上截图的异常。 ![宏03.webp](/download/01008fac2d68724747fc8ed128b5da002937.webp) 解决方案:引擎序列化长度为0字段时,直接返回null即可,EAS861已有补丁解决。 |版本|领域|补丁号| |-|-|-| |EAS861|BOS_RTE|PT165027| **后续持续完善补充其他场景...**

EAS扩展报表数据集执行常见报错及解决方案

客户端制作扩展报表数据集时,有时会因为一些语法或数据库差异导致查询报错,导致报错的可能原因大概有以下原因,可参考进行问题分析排查。...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息