Oracle执行update语句字段更新内容过长解决方案ORA-00972:标识符过长
错误描述:ORA-00972:标识符过长
错误原因:update的字段使用了双引号
对于超长的存储SQL举例
UPDATE FEATURE set "FEATURE_SQL" = 'SELECT SUM(CASE WHEN bglst_typ_cd in (''01'', ''02'', ''03'', ''04'', ''11'', ''12'') THEN 1 else 0 END) val FROM bds_rtafp_inadb_lnact_nmlst t INNER JOIN risk_request r ON r.risk_request_id = t.risk_request_id WHERE r.risk_request_individual_id = ''{individualId}'' AND r.risk_request_status = ''finish''' WHERE CODE = 'BLACK_LIST'
Oracle有个不好的地方,就是更新内容内包含单引号的,需要使用双单引号反转义一下,即可直接更新
错误案例
UPDATE FEATURE set "FEATURE_SQL" = "SELECT SUM(CASE WHEN bglst_typ_cd in ('01', '02', '03') THEN 1 else 0 END) val FROM bds_rtafp_inadb_lnact_nmlst t INNER JOIN risk_request r ON r.risk_request_id = t.risk_request_id WHERE r.risk_request_individual_id = '{individualId}' AND r.risk_request_status = finish'" WHERE CODE = 'BLACK_LIST'
我们使用了双引号更新,会直接抛出标识符过长错误
本作品采用《CC 协议》,转载必须注明作者和本文链接