我需要完全按照这个问题从 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 在查询时不报错?