各位大佬麻烦帮忙看一下这个问题 想要做到正常查询 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可以早达梦客户端正常执行,但是放到服务中调用仍旧出现异常
文章
阅读量
获赞