-
-
LL186 初学数据Lv2
发表于2021-3-2 11:30
悬赏10
已解决
报错信息为
2021-03-02 11:28:09.947 开始计算报表:copyof_zcmx(内存情况:FREE=1.568G TOTAL=1.917G MAX=1.917G)
2021-03-02 11:28:09.948 引用的主题表:V_QUERY_ZZQ_ZFMX 单位支付明细
2021-03-02 11:28:09.948 查询的数据级次范围:没有做限制。
2021-03-02 11:28:09.949 001开始多表格各分析区并行计算
2021-03-02 11:28:09.951 [GRID1(0.0.8.4)]正在生成SQL...
2021-03-02 11:28:10.068 [GRID1(0.0.8.4)]计算表格GRID1
2021-03-02 11:28:10.068 [GRID1(0.0.8.4)]生成SQL耗时117毫秒
2021-03-02 11:28:10.069 [GRID1(0.0.8.4)]执行SQL:
SELECT * FROM (select CONCAT(ifnull(CONCAT(ifnull(a.BUDGET_ACCOUNT,''), ifnull(' ','')),''), ifnull(a.BUDGET_ACCOUNT_NAME,'')) as B4,a.PROJECT_NAME as C4,CONCAT(ifnull(CONCAT(ifnull(a.PAY_TYPE,''), ifnull(' ','')),''), ifnull(a.PAY_NAME,'')) as D4,CONCAT(ifnull(CONCAT(ifnull(a.ECONOMY_TYPE,''), ifnull(' ','')),''), ifnull(a.ECONOMY_NAME,'')) as E4,a.PAY_MONEY as F4,CONCAT(ifnull(CONCAT(ifnull(CONCAT(ifnull(CONCAT(ifnull(CONCAT(ifnull(a.PAYEE_NAME,''), ifnull('(','')),''), ifnull(a.PAYEE_NUMBER,'')),''), ifnull('-','')),''), ifnull(a.PAYEE_BANK,'')),''), ifnull(')','')) as G4,a.PAY_DATE as H4,CONCAT(ifnull(a.ORG_CODE CONCAT(ifnull({0},''), ifnull(a.ORG_NAME,'')) ' ',''), ifnull(a.ORG_NAME,'')) as A4
from V_QUERY_ZZQ_ZFMX a
where ((a.PAY_DATE like '2020%') AND (a.ORG_CODE LIKE '100%'))
order by a.PAY_DATE desc )TEMP_ LIMIT 200
java.lang.RuntimeException: 计算浮动表元 GRID1->A4 (V_QUERY_ZZQ_ZFMX.ORG_CODE +' '+V_QUERY_ZZQ_ZFMX.ORG_NAME)时出错:parser: syntax error at or near "CONCAT" at character 627
at com.oscar.protocol.OSCARProtocolV2.fetchMore(OSCARProtocolV2.java:451)
at com.oscar.protocol.OSCARProtocolV2.fetchMore(OSCARProtocolV2.java:56)
at com.oscar.jdbc.OscarStatementV2.doExecuteStatement(OscarStatementV2.java:153)
at com.oscar.jdbc.OscarStatementV2.executeStatement(OscarStatementV2.java:103)
at com.oscar.jdbc.OscarStatement.executeQuery(OscarStatement.java:721)
at com.oscar.jdbc.OscarStatement.executeQuery(OscarStatement.java:701)
at com.esen.jdbc.pool.PooledStatement.getQureyResultSet(PooledStatement.java:54)
at com.esen.jdbc.pool.PooledStatement.executeQuery(PooledStatement.java:44)
at com.esen.irpt.rpdb.db.top.OlapResultMultImpl.queryData(OlapResultMultImpl.java:421)
at com.esen.irpt.rpdb.db.top.OlapResultMultImpl.doit(OlapResultMultImpl.java:230)
at com.esen.irpt.rpdb.db.top.OlapResultMultImpl.(OlapResultMultImpl.java:97)
at com.esen.irpt.rpdb.db.top.CalcOlapResult.calcGroupOlap(CalcOlapResult.java:78)
at com.esen.irpt.fxcalc.impl.GroupOlapEngine.calc(GroupOlapEngine.java:35)
at com.esen.irpt.fxcalc.impl.cache.floatfxq2.OLTPResultManager.calcOlap(OLTPResultManager.java:554)
at com.esen.irpt.fxcalc.impl.cache.floatfxq2.OLTPResultManager.getOltpResult(OLTPResultManager.java:543)
at com.esen.irpt.fxcalc.impl.cache.floatfxq2.OLTPResultManager.getOltpData4AutoOlap(OLTPResultManager.java:155)
at com.esen.irpt.fxcalc.impl.cache.floatfxq2.OLTPResultManager.getOltpData(OLTPResultManager.java:88)
at com.esen.irpt.fxcalc.impl.cache.FxBaseAnalyseReportCalc.getOltpData(FxBaseAnalyseReportCalc.java:502)
at com.esen.irpt.fxcalc.impl.cache.floatfxq2.FloatFxqCalc.getOltpData(FloatFxqCalc.java:271)
at com.esen.irpt.fxcalc.impl.cache.floatfxq2.FloatFxqInnerCalc.getOltpData(FloatFxqInnerCalc.java:80)
at com.esen.irpt.fxcalc.impl.cache.floatfxq2.QueryRectsResult_Impl.getOltpData(FloatFxqInnerCalc.java:1174)
at com.esen.irpt.fxcalc.impl.cache.floatfxq2.QueryRectsResult_Impl.getOltpData(FloatFxqInnerCalc.java:1145)
at com.esen.irpt.fxcalc.impl.cache.floatfxq2.QueryRectsResult_Impl.collectResult_float_autoolap_processdata_select(FloatFxqInnerCalc.java:1030)
at com.esen.irpt.fxcalc.impl.cache.floatfxq2.QueryRectsResult_Impl.collectResult_float_autoolap_processdata(FloatFxqInnerCalc.java:905)
at com.esen.irpt.fxcalc.impl.cache.floatfxq2.QueryRectsResult_Impl.collectResult_float_oltp(FloatFxqInnerCalc.java:841)
at com.esen.irpt.fxcalc.impl.cache.floatfxq2.QueryRectsResult_Impl.collectResult_float(FloatFxqInnerCalc.java:793)
at com.esen.irpt.fxcalc.impl.cache.floatfxq2.QueryRectsResult_Impl.collectResult(FloatFxqInnerCalc.java:149)
at com.esen.irpt.fxcalc.impl.cache.floatfxq2.FloatFxqInnerCalc.calc(FloatFxqInnerCalc.java:59)
at com.esen.irpt.fxcalc.impl.cache.floatfxq2.FloatFxqCalc.calc(FloatFxqCalc.java:267)
at com.esen.irpt.fxcalc.impl.cache.floatfxq2.FloatRectInFxqResultImpl.processResult(FloatRectInFxqResultImpl.java:56)
at com.esen.irpt.fxcalc.impl.cache.floatfxq2.RectsInFxqResultImpl.processResult(RectsInFxqResultImpl.java:102)
at com.esen.irpt.fxcalc.impl.cache.floatfxq2.FloatFxqResultImpl.processResult(FloatFxqResultImpl.java:98)
at com.esen.irpt.fxcalc.impl.cache.floatfxq2.FloatFxqCalc.calc(FloatFxqCalc.java:105)
at com.esen.irpt.fxcalc.impl.FxCalc.calc(FxCalc.java:34)
at com.esen.irpt.fxcalc.impl.cache.RequestTask_FxqCalc.doRun(RequestTask_FxqCalc.java:104)
at com.esen.irpt.req.AbstractRequestTask.call(AbstractRequestTask.java:85)
at com.esen.platform.common.req.RequestTaskRunner.call(RequestTaskRunner.java:75)
at com.esen.thread.LocaleTask.call(LocaleTask.java:60)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.RuntimeException: parser: syntax error at or near "CONCAT" at character 627
... 42 more
Caused by: com.esen.jdbc.pool.impl.oscar.OscarPooledSQLException: parser: syntax error at or near "CONCAT" at character 627
... 42 more
23个回答
1505121235 发表于 2021-3-2 19:23
你这么写想实现什么功能,为什么表达式里面要加空字符串
就是单纯的 “编码 名称”这种显示方式,这套报表原来在oracle下是没问题的,就连接到神通数据库上之后开始报错
虽然以self.value+self.text 这种方式显示也可以 但需要每个报表都重新改 而且那个字段必须指定维表才可以
1505121235 发表于 2021-3-2 19:45
可能是神通数据库本身不支持这种拼接方式
?????生成的sql有问题吧?缺了个逗号 不是吗?
-
1505121235 数据老手Lv5
LL186 发表于 2021-3-2 20:03
?????生成的sql有问题吧?缺了个逗号 不是吗?
还有一个方法就是在报表再加一列,表达式为self.leftcell()+self.leftcell(2)
-
1505121235 数据老手Lv5
1505121235 发表于 2021-3-2 20:24
还有一个方法就是在报表再加一列,表达式为self.leftcell()+self.leftcell(2)

1505121235 发表于 2021-3-2 20:30
试了一下,oracle数据库可以
oracle下是可以, 但神通数据库下会报错, 所以才发帖子问的 , 神通数据库下 这种写法生成的sql好像丢了一个逗号
LL186 发表于 2021-3-3 15:07
oracle下是可以, 但神通数据库下会报错, 所以才发帖子问的 , 神通数据库下 这种写法生成的sql好像丢了一 ...
您的数据库版本和产品版本是什么
这里需要您打debug日志出来看一下操作是
”系统管理--数据库连接池--编辑连接池--高级选项--日志级别改为debug,点击保存,自动重启一下后,去计算报错的报表,之后在系统管理--性能和维护--java控制台中,下载日志“