J2SE

SQL 脚本中的全角逗号引起【ORA-01756: 引号内的字符串没有正确结束】

不羁的心 提交于 2019-12-25 12:06:20
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 今天运行壹個小程序,功能是读取指定目录下的 SQL 脚本,并加载到内存中批量执行,之前的程序运行良好。但是今天相关开发人员更新了其中壹個 SQL 脚本,于是程序运行的时候就出错了,错误提示信息如下: 批处理中出现错误: ORA-01756: 引号内的字符串没有正确结束 。 用 Notepad++ 打开看了下 SQL 脚本,没有发现明显的语法错误,再仔细找了找包含单引号和双引号的语句,也没有看到语句未正确结束的地方。于是有点困惑,开始启动 Eclipse 的 Debug 模式仔细分析,并调低了日志级别到 DEBUG,将所有解析出来的 SQL 语句打印至控制台。 结果在日志中发现有的 SQL 语句解析之后居然是乱码,截取部分内容如下所示: 4,2,'?占淇迹罩湛贾? from TRUSTDB.TRUST_PRDT_MEM_SET t 很明显的,数字2后面的部分只有壹個开始的单引号,而没有关闭的单引号,看来极有可能是这段乱码引起的,上述内容在原始的 SQL 文件(GBK 编码)中实际是这样的: 4,2,'日间开始,日终开始之前' from TRUSTDB.TRUST_PRDT_MEM_SET t 不知道为什么经过 Java 解析之后会变成壹串乱码。找到问题的所在,修改的时候直接把“日间开始,日终开始之前