5
在从字符串> 4k创建的谓词中使用Oracle Clob
我正在尝试从> 4000个字符(在file_data绑定变量中提供)的字符串创建一个Clob,以在下面的Oracle SELECT谓词中使用: myQuery= select * from dcr_mols WHERE flexmatch(ctab,:file_data,'MATCH=ALL')=1; 如果我将TO_CLOB()添加到file_data的周围,则它将无法达到臭名昭著的Oracle 4k对varchar的限制(对于<4k的字符串就可以)。错误(在SQL Developer中)为: ORA-01460: unimplemented or unreasonable conversion requested 01460. 00000 - "unimplemented or unreasonable conversion requested" 仅供参考,flexmatch函数用于搜索分子,在此处进行了描述:http : //help.accelrysonline.com/ulm/onelab/1.0/content/ulm_pdfs/direct/developers/direct_2016_developersguide.pdf 函数本身有点复杂,但本质是第二个参数必须是Clob。所以我的问题是如何将超过4000个字符的Java字符串bind_variable转换为sql(或Java)中的clob。 我使用以下方法在Java(Spring boot 2)中尝试了以下方法(在插入Clob时有效): MapSqlParameterSource parameters = new MapSqlParameterSource(); parameters.addValue("file_data", fileDataStr,Types.CLOB); jdbcNamedParameterTemplate.query(myQuery,parameters,… 此方法应该可以工作,但是会失败,并会产生一个弹性匹配错误,仅供参考: SQL state [99999]; error code [29902]; ORA-29902: …