如何通过JDBC显示Informix sysprocedures.paramtypes列?
我无法通过本机JDBC驱动程序执行SQL查询。此查询由我的程序使用,该程序生成Informix数据库模式的raport: 当我使用ODBC时,它可以工作,但是这个程序可以由Jython和JDBC运行,在JDBC中我得到了一个异常:如何通过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错误描述,它们只会在网络中搜索解决方案时
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