Translating SQLException with SQL state '42000', error code '1064',处理

本文介绍了解决MyBatis在执行批量修改记录时出现的SQL语法错误问题。通过在JDBC连接字符串中添加特定参数允许批量处理SQL语句,成功解决了该问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天在执行mabtis的批量修改记录时候出现了

-Translating SQLException with SQL state '42000', error code '1064', message [You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'update **** 
       set  pro_loan_sta' at line 8]; SQL was [] for task [

### Error updating database.  Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'update  **** 

网上有说是使用MYSQL的关键字。

但是看了下,这张表的字段并没有使用到关键字。

处理方法为:在jdbc的链接信息上加上 

&allowMultiQueries\=true (表示允许批量处理sql语句)这句话,就可以了。

CREATE OR REPLACE FUNCTION IMES.FN_MES_ERROR_CODE_TRANSLATE ( T_ERROR_CODE VARCHAR2, --ErrorCode T_LANGUAGE VARCHAR2, --语言 T_PARAMS VARCHAR2 --报错参数,多个参数以#隔开,最多支持9个参数 ) RETURN VARCHAR2 IS V_COUNT NUMBER; V_ERRORCODE_CODE IMES.M_MES_ERROR_CODE.ERRORCODE%TYPE; V_ERRORCODE_DESC IMES.M_MES_ERROR_CODE.ERRORCODE_DESC%TYPE; V_NEXT_ACTION IMES.M_MES_ERROR_CODE.NEXT_ACTION%TYPE; V_NEED_LOG IMES.M_MES_ERROR_CODE.NEED_LOG%TYPE; V_LANGUAGE IMES.M_MES_ERROR_CODE.LANGUAGE%TYPE; V_RETURN VARCHAR2 (4000); CURSOR PARAMS IS SELECT REGEXP_SUBSTR (T_PARAMS, '[^#]+', 1, 1) T1, REGEXP_SUBSTR (T_PARAMS, '[^#]+', 1, 2) T2, REGEXP_SUBSTR (T_PARAMS, '[^#]+', 1, 3) T3, REGEXP_SUBSTR (T_PARAMS, '[^#]+', 1, 4) T4, REGEXP_SUBSTR (T_PARAMS, '[^#]+', 1, 5) T5, REGEXP_SUBSTR (T_PARAMS, '[^#]+', 1, 6) T6, REGEXP_SUBSTR (T_PARAMS, '[^#]+', 1, 7) T7, REGEXP_SUBSTR (T_PARAMS, '[^#]+', 1, 8) T8, REGEXP_SUBSTR (T_PARAMS, '[^#]+', 1, 9) T9 FROM DUAL; CURSOR ERROR_DESC_PARAMS IS SELECT REGEXP_SUBSTR ( CASE WHEN INSTR (V_ERRORCODE_DESC, '$', 1) = 1 THEN ':' || V_ERRORCODE_DESC ELSE V_ERRORCODE_DESC END, '[^$]+', 1, LEVEL, 'i') AS STR FROM DUAL CONNECT BY LEVEL <= 9; /*************************************************************************** CREATE BY LEMON V1.0.0.0 2023/05/09 报错ERROR CODE翻译初版 MODIFY BY LEMON V1.0.0.1 2023/05/24 优化$符在第一个字符,不替换参数的问题;语言传空值时,默认给EN ***************************************************************************/ BEGIN --检查ERROR CODE或LANGUAGE空值 IF T_ERROR_CODE = '' OR T_ERROR_CODE IS NULL THEN V_RETURN := 'ERROR CODE CAN NOT NULL'; RETURN V_RETURN; END IF; IF T_LANGUAGE = '' OR T_LANGUAGE IS NULL THEN V_LANGUAGE := 'EN'; ELSE V_LANGUAGE := T_LANGUAGE; END IF; --没有查询到ERROR CODE资料,直接退出 SELECT COUNT (1) INTO V_COUNT FROM IMES.M_MES_ERROR_CODE A WHERE A.ERRORCODE = T_ERROR_CODE AND A.LANGUAGE = V_LANGUAGE; IF V_COUNT = 0 THEN V_RETURN := 'ERROR CODE: ' || T_ERROR_CODE || ', LANGUAGE: ' || V_LANGUAGE || ' IS NOT MAINTAIN'; RETURN V_RETURN; END IF; --ERROR CODE ENABLED = 'N',直接退出 SELECT COUNT (1) INTO V_COUNT FROM IMES.M_MES_ERROR_CODE A WHERE A.ERRORCODE = T_ERROR_CODE AND A.LANGUAGE = V_LANGUAGE AND ENABLED = 'Y'; IF V_COUNT = 0 THEN V_RETURN := 'ERROR CODE: ' || T_ERROR_CODE || ', LANGUAGE: ' || V_LANGUAGE || ' IS DISABLED'; RETURN V_RETURN; END IF; FOR PARAM IN PARAMS LOOP EXIT WHEN PARAMS%NOTFOUND; --根据语言和ERROR CODE获取ERROR CODE信息 SELECT A.ERRORCODE, NVL (A.ERRORCODE_DESC, 'NULL'), NVL (A.NEXT_ACTION, 'NULL'), A.NEED_LOG INTO V_ERRORCODE_CODE, V_ERRORCODE_DESC, V_NEXT_ACTION, V_NEED_LOG FROM IMES.M_MES_ERROR_CODE A WHERE A.ERRORCODE = T_ERROR_CODE AND A.LANGUAGE = V_LANGUAGE AND ENABLED = 'Y'; --替换ERROR CODE里面的参数 FOR ERROR_DESC_PARAM IN ERROR_DESC_PARAMS LOOP EXIT WHEN ERROR_DESC_PARAMS%NOTFOUND; EXIT WHEN ERROR_DESC_PARAM.STR IS NULL; V_RETURN := V_RETURN || ERROR_DESC_PARAM.STR || (CASE WHEN ERROR_DESC_PARAMS%ROWCOUNT = 1 THEN PARAM.T1 WHEN ERROR_DESC_PARAMS%ROWCOUNT = 2 THEN PARAM.T2 WHEN ERROR_DESC_PARAMS%ROWCOUNT = 3 THEN PARAM.T3 WHEN ERROR_DESC_PARAMS%ROWCOUNT = 4 THEN PARAM.T4 WHEN ERROR_DESC_PARAMS%ROWCOUNT = 5 THEN PARAM.T5 WHEN ERROR_DESC_PARAMS%ROWCOUNT = 6 THEN PARAM.T6 WHEN ERROR_DESC_PARAMS%ROWCOUNT = 7 THEN PARAM.T7 WHEN ERROR_DESC_PARAMS%ROWCOUNT = 8 THEN PARAM.T8 WHEN ERROR_DESC_PARAMS%ROWCOUNT = 9 THEN PARAM.T9 END); END LOOP; --拼接NEXT_ACTION IF V_NEXT_ACTION = 'NULL' OR V_NEXT_ACTION IS NULL THEN V_RETURN := V_RETURN; ELSE V_RETURN := V_RETURN || ' Next Action:' || V_NEXT_ACTION; END IF; END LOOP; RETURN T_ERROR_CODE || ' : ' || V_RETURN; END; /
最新发布
07-24
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值