如何通过JDBC显示Informix sysprocedures.paramtypes列?

如何通过JDBC显示Informix sysprocedures.paramtypes列?,jdbc,informix,Jdbc,Informix,我无法通过本机JDBC驱动程序执行SQL查询。此查询由我的程序使用,该程序生成Informix数据库模式的raport: 当我使用ODBC时,它可以工作,但是这个程序可以由Jython和JDBC运行,在JDBC中我得到了一个异常: Dla tego typu danych jest wymagana dostosowana mapa typów. [SQLCode: -79769], [SQLState: IX000] 英语翻译(我讨厌本地语言的JDBC错误描述,它们只会在网络中搜索解决方案时

我无法通过本机JDBC驱动程序执行SQL查询。此查询由我的程序使用,该程序生成Informix数据库模式的raport:

当我使用ODBC时,它可以工作,但是这个程序可以由Jython和JDBC运行,在JDBC中我得到了一个异常:

Dla tego typu danych jest wymagana dostosowana mapa typów. [SQLCode: -79769], [SQLState: IX000]
英语翻译(我讨厌本地语言的JDBC错误描述,它们只会在网络中搜索解决方案时产生问题):

我还试着简单地说:

SELECT * FROM sysprocedures
但这在JDBC中也不起作用

我发现
paramtypes
是一个问题:如果我删除它,查询就会工作


要将此列映射到JDBC可以显示的内容,我必须注册什么?

paramtypes列是一种复杂的列类型,使用Informix的一些扩展特性创建。我怀疑ODBC驱动程序通过执行以下等效操作来解决此问题:

SELECT procname, numargs, isproc, paramtypes::LVARCHAR, variant, handlesnulls, parallelizable
  FROM sysprocedures
 WHERE internal = 'f' AND mode IN ('D', 'd', 'O', 'o')
 ORDER BY procname, numargs, procid

也就是说,它强制转换为字符串。当我运行查询(在我的SQLCMD中)时,我会得到输出,但许多procname是空字符串。我不太清楚那里发生了什么。

paramtypes列是一种复杂的列类型,它是使用Informix的一些扩展特性创建的。我怀疑ODBC驱动程序通过执行以下等效操作来解决此问题:

SELECT procname, numargs, isproc, paramtypes::LVARCHAR, variant, handlesnulls, parallelizable
  FROM sysprocedures
 WHERE internal = 'f' AND mode IN ('D', 'd', 'O', 'o')
 ORDER BY procname, numargs, procid

也就是说,它强制转换为字符串。当我运行查询(在我的SQLCMD中)时,我会得到输出,但许多procname是空字符串。我不太清楚那里发生了什么。

将角色转换为
LVARCHAR
有效!我尝试了
VARCHAR
,但没有成功。现在它返回类似“integer,integer,varchar”的字符串。谢谢向LVARCHAR施压有效!我尝试了
VARCHAR
,但没有成功。现在它返回类似“integer,integer,varchar”的字符串。谢谢
SELECT procname, numargs, isproc, paramtypes::LVARCHAR, variant, handlesnulls, parallelizable
  FROM sysprocedures
 WHERE internal = 'f' AND mode IN ('D', 'd', 'O', 'o')
 ORDER BY procname, numargs, procid