我的jsp页面上有一个表,其中的列由一个类型为CLOB的数据库列填充。我在这方面遇到了一些麻烦,并且已经看到有关此问题的其他问题,但答案对我没有用。这是我的陈述,其中评论是CLOB。
stmt = conn.prepareStatement("SELECT DISTINCT restriction, person, start_date, end_date, comments "
+ " FROM restrictions WHERE person = ? "
+ " AND (start_date BETWEEN TO_DATE (? , 'yyyy/mm/dd') AND TO_DATE (? , 'yyyy/mm/dd') "
+ " OR start_date < TO_DATE (? , 'yyyy/mm/dd') AND end_date IS NULL) " );
stmt.setString(1, Id);
stmt.setString(2, StartRest);
stmt.setString(3, EndRest);
stmt.setString(4, EndRest);
result = stmt.executeQuery();
然后我将在while循环中添加列:
while (result.next()) {
restrictions = StringUtils.defaultString(result.getString("str_restriction"));
.......
// here is where I would get my Clob data from the query.
所以,基本上,我想知道是否有一种方法可以在查询中翻译CLOB,甚至是在java代码中,因此它可以在我的页面中使用。
答案 0 :(得分:2)
问题来自查询的distint子句,该子句无法应用于CLOB。
检查是否确实需要distinct关键字。或者您可以将查询重写为
select restriction, person, start_date, end_date, comments from restrictions
where id in (select distinct id from restrictions where <original where clause>)
PS:下次,在问题中包含错误消息和您的数据库。我已经能够在“ora-00932 clob”上通过简单的谷歌搜索找到问题。