1

ネイティブ JDBC ドライバーを介した SQL クエリの実行に問題があります。このクエリは、Informix データベース スキーマのレポートを作成する私のプログラムで使用されます: http://code.activestate.com/recipes/576621-dump-informix-schema-to-text/

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

ODBCを使用すると機能しますが、このプログラムはJythonとJDBCで実行でき、JDBCでは例外が発生しました:

Dla tego typu danych jest wymagana dostosowana mapa typów. [SQLCode: -79769], [SQLState: IX000]

英語の翻訳 (母国語での JDBC エラーの説明は嫌いです。ネットワークで解決策を検索するときに問題を起こすだけです):

-79769 A customized type map is required for this data type
Explanation: You must register a customized type map to use any opaque types.

私も簡単に試しました:

SELECT * FROM sysprocedures

しかし、これも JDBC では機能しません。

問題があることがわかりましたparamtypes。クエリを削除すると、クエリが機能します。

この列を JDBC が表示できるものにマップするには、何を登録する必要がありますか?

4

2 に答える 2

1

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は空の文字列です。何が起こっているのかよくわかりません。

于 2013-02-01T19:21:44.120 に答える