fixed Oracle SQL报错 #ORA-01460: 转换请求无法实施或不合理

最近遇到一个oracle错误,之前并没有遇到过,并不是select in超过1000个导致的,通过网上资料说是oracle版本导致,也有的说是oracle SQL过长导致。

然后通过自己实践应该说是oracle SQL过长导致,看了一下SQL并不是很长,主要还是select in,因为主键换成uuid之后,来几百个uuid的数据,select in就导致SQL过长报错,我觉得网上所说的换oracle版本,也有可能是oracle版本对SQL过长支持不同。不过我还是通过改写业务SQL解决问题的。项目中也不可能随便就换oracle版本。

原来的代码,主要是select in 然后itemCode就是用;分隔的一大串的主键字符串,然后又换成uuid的了,所以导致sql过长

/**
     * 获取信息模板
     * @return
     */
    private List getSettingTemplate(String itemCode)
            throws SQLException {
        PreparedStatement pst = null;
        StringBuffer sb = new StringBuffer();
            sb.append("select a.itemCode, ");
                 sb.append("a.type, ");
                 sb.append("b.warn_days, ");
                 sb.append("c.proj_name, "

你可能感兴趣的:(fixed Oracle SQL报错 #ORA-01460: 转换请求无法实施或不合理)