DB2或Java中的问题 - 处理CLOB数据类型

时间:2013-04-25 15:02:57

标签: java db2

我需要完全按照this问题从DB2中提取逗号分隔值,因此在快速搜索之后,我通过在select子句中使用以下函数找到了解决方案:

SUBSTR(XMLCAST(XMLGROUP(', ' || col_1 AS C ORDER BY col_1)  AS clob), 3) AS RES_COL

现在,返回的输出是CLOB而不是VARCHAR。我尝试通过增加VARCHAR限制,但它给出了CAST错误。现在,我在JAVA中读取此CLOB列时遇到异常。

SQL state [HY000]; error code [0]; [BEA][DB2 JDBC Driver]SQLDIAGGRP was specified and not null.; nested exception is java.sql.SQLException: [BEA][DB2 JDBC Driver]SQLDIAGGRP was specified and not null.
    at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:83)
    at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
    at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:407)
    at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:458)

我无法找到任何有关此异常意味着什么的帮助?我的理解是它与JDBC驱动程序有关,但有人可以解释一下吗?

否则,DB2专家能否告诉我如何返回VARCHAR而不是CLOB,以便JAVA在查询时不会抱怨?

1 个答案:

答案 0 :(得分:0)

我能够通过在XMLCAST输出上使用CAST和TRIM DB2函数来解决此问题。现在我能够从查询中返回VARCHAR,JAVA代码也能正常工作。

   SUBSTR(TRIM(CAST(XMLCAST(XMLGROUP(', ' || col_1 AS C ORDER BY col_1) AS clob) AS VARCHAR(4096))), 3) AS RES_COL