注册
mysql转达梦原始sql执行错误
培训园地/ 文章详情 /

mysql转达梦原始sql执行错误

杨** 2023/09/07 1401 0 0

各位大佬麻烦帮忙看一下这个问题 想要做到正常查询 sql如下:

SELECT 1 FROM db_tyjr.j_personnel_jdlk a LEFT JOIN db_tyjr.t_irs_health b ON a.IdCardNum = b.certNo 
WHERE CASE 
WHEN (b.gend = '男' AND FLOOR((TO_NUMBER(TO_CHAR(NOW(), 'YYYYMMDD')) - TO_NUMBER(SUBSTR(CFALGORITHMSDECRYPT(a.idcardnum,514,'ABABABABABABABAB'), 7, 8))) / 10000) < 60) THEN 1 
WHEN (b.psnType = '公务员在职' AND FLOOR((TO_NUMBER(TO_CHAR(NOW(), 'YYYYMMDD')) - TO_NUMBER(SUBSTR(CFALGORITHMSDECRYPT(a.idcardnum,514,'ABABABABABABABAB'), 7, 8))) / 10000) < 60) THEN 1 
WHEN FLOOR((TO_NUMBER(TO_CHAR(NOW(), 'YYYYMMDD')) - TO_NUMBER(SUBSTR(CFALGORITHMSDECRYPT(a.idcardnum,514,'ABABABABABABABAB'), 7, 8))) / 10000) < 55 THEN 1 ELSE 0 END = 1 
AND a.houseRegisCate = 1  
AND a.deleted = 0  
AND ( a.source IN ( 3, 4, 5 )OR ( a.source IN ( 0, 1 ) AND a.STATUS = 3 )) 
AND a.is_death = 0  
AND a.area LIKE CONCAT('%', '越城区', '%')  
GROUP BY a.idCardNum
) a

错误内容:


[执行语句1]:
SELECT COUNT(1) FROM ( 
SELECT 1 FROM db_tyjr.j_personnel_jdlk a LEFT JOIN db_tyjr.t_irs_health b ON a.IdCardNum = b.certNo 
WHERE CASE 
WHEN (b.gend = '男' AND FLOOR((TO_NUMBER(TO_CHAR(NOW(), 'YYYYMMDD')) - TO_NUMBER(SUBSTR(CFALGORITHMSDECRYPT(a.idcardnum,514,'ABABABABABABABAB'), 7, 8))) / 10000) < 60) THEN 1 
WHEN (b.psnType = '公务员在职' AND FLOOR((TO_NUMBER(TO_CHAR(NOW(), 'YYYYMMDD')) - TO_NUMBER(SUBSTR(CFALGORITHMSDECRYPT(a.idcardnum,514,'ABABABABABABABAB'), 7, 8))) / 10000) < 60) THEN 1 
WHEN FLOOR((TO_NUMBER(TO_CHAR(NOW(), 'YYYYMMDD')) - TO_NUMBER(SUBSTR(CFALGORITHMSDECRYPT(a.idcardnum,514,'ABABABABABABABAB'), 7, 8))) / 10000) < 55 THEN 1 ELSE 0 END = 1 
AND a.houseRegisCate = 1  
AND a.deleted = 0  
AND ( a.source IN ( 3, 4, 5 )OR ( a.source IN ( 0, 1 ) AND a.STATUS = 3 )) 
AND a.is_death = 0  
AND a.area LIKE CONCAT('%', '越城区', '%')  
GROUP BY a.idCardNum
) a
执行失败(语句1)
非法的参数数据

1条语句执行失败

后面改造sql:

2023-09-07 09:30:09.900 DEBUG 8608 --- [nio-8074-exec-3] c.s.r.m.J.jobAgePersonnelCount           : ==> Parameters: 越城区(String)
2023-09-07 09:30:14.356 ERROR 8608 --- [nio-8074-exec-3] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.dao.DataIntegrityViolationException: 
### Error querying database.  Cause: dm.jdbc.driver.DMException: 非法的参数数据
### The error may exist in com/sxzhyl/renyuan/mapper/JdlkEmployedMapper.java (best guess)
### The error may involve com.sxzhyl.renyuan.mapper.JdlkEmployedMapper.jobAgePersonnelCount
### The error occurred while handling results
### SQL: SELECT CFALGORITHMSDECRYPT(a.idCardNum,514,'ABABABABABABABAB'),a.source,a.STATUS  FROM db_tyjr.j_personnel_jdlk a LEFT JOIN db_tyjr.t_irs_health b ON a.IdCardNum = b.certNo  WHERE CASE  WHEN (b.gend = '男' AND FLOOR((TO_NUMBER(TO_CHAR(NOW(), 'YYYYMMDD')) - TO_NUMBER(SUBSTR(CFALGORITHMSDECRYPT(a.idcardnum,514,'ABABABABABABABAB'), 7, 8))) / 10000) < 60) THEN 1  WHEN (b.psnType = '公务员在职' AND FLOOR((TO_NUMBER(TO_CHAR(NOW(), 'YYYYMMDD')) - TO_NUMBER(SUBSTR(CFALGORITHMSDECRYPT(a.idcardnum,514,'ABABABABABABABAB'), 7, 8))) / 10000) < 60) THEN 1  WHEN FLOOR((TO_NUMBER(TO_CHAR(NOW(), 'YYYYMMDD')) - TO_NUMBER(SUBSTR(CFALGORITHMSDECRYPT(a.idcardnum,514,'ABABABABABABABAB'), 7, 8))) / 10000) < 55 THEN 1  ELSE 0 END = 1  AND a.houseRegisCate = 1   AND a.deleted = 0  AND a.is_death = 0   AND a.area LIKE CONCAT('%', ?, '%')
### Cause: dm.jdbc.driver.DMException: 非法的参数数据
; 非法的参数数据; nested exception is dm.jdbc.driver.DMException: 非法的参数数据] with root cause

dm.jdbc.driver.DMException: 非法的参数数据
	at dm.jdbc.driver.DBError.throwException(DBError.java:636) ~[DmJdbcDriver18.jar:- 8.1.1.88 - Production]
	at dm.jdbc.c.b.p.S(MSG.java:225) ~[DmJdbcDriver18.jar:- 8.1.1.88 - Production]
	at dm.jdbc.c.b.p.P(MSG.java:185) ~[DmJdbcDriver18.jar:- 8.1.1.88 - Production]
	at dm.jdbc.c.b.p.O(MSG.java:166) ~[DmJdbcDriver18.jar:- 8.1.1.88 - Production]
	at dm.jdbc.c.a.a(DBAccess.java:786) ~[DmJdbcDriver18.jar:- 8.1.1.88 - Production]
	at dm.jdbc.c.a.a(DBAccess.java:234) ~[DmJdbcDriver18.jar:- 8.1.1.88 - Production]
	at dm.jdbc.driver.DmdbResultSet.fetchData(DmdbResultSet.java:570) ~[DmJdbcDriver18.jar:- 8.1.1.88 - Production]

改造sql可以早达梦客户端正常执行,但是放到服务中调用仍旧出现异常

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服