配列型を必要とする JDBC ストアド関数 (callable ステートメントを使用) に NULL 値を渡すのに問題があります。これは、IN パラメータを NULL に設定しようとしている場合にのみ問題になります (たとえば、空の配列を作成して渡すことはできますが、そうする必要はありません)。
たとえば、回避策としてこれを行うことができます。
callableStatement.setObject(index, callableStatement.getConnection.createArrayOf("numeric", Array().asInstanceOf[Array[AnyRef]]))
しかし、これは私を悩ませます。まず、NULL 配列を渡すための API があるはずです。第二に、正当な理由もなく空の配列を作成しています (これはワンライナーではないため、正しい配列型を作成する必要があります。いくつかの異なる型をサポートする必要があります)。ぐちゃぐちゃになります。
私はこれを行うことができるはずです(または少なくともかなり似たようなこと):
callableStatement.setNull(index, Types.ARRAY)
ただし、例外が発生します。
com.edb.util.PSQLException: エラー: 関数 app_fetch_user_list_pkg.n_execute(文字可変、文字可変[]、文字可変、ブール値、整数) が存在しません
何か案は?(私たちは Postgresql/EDB と Oracle を使用しています...これまでのところ、私は Postgresql インスタンスを試してきました)。