一部を掘り後答えは "いいえ"です。しかし、拡張はかなり単純であるべきです。カスタムデータ型を使用する場合、各SqlParameterの宣言には、少なくとも3つのパラメータ(parameter_name、Oracle_type、およびcustom_data_type_name)が必要です。 - コンポーネントがここにコードがあるクラス
org.apache.camel.component.sql.stored.TemplateStoredProcedure
でプロシージャのパラメータを宣言している手順コンポーネントストアドバックキャメルSQLに行く
declareParameter(new SqlParameter("p_instance_id", OracleTypes.INTEGER));
declareParameter(new SqlParameter("p_inparm",OracleTypes.ARRAY, "InParm_rec"));
declareParameter(new SqlOutParameter("p_error_cd", OracleTypes.INTEGER));
declareParameter(new SqlOutParameter("p_error_message", OracleTypes.VARCHAR));
次のように私の例では、属性の宣言がなければなりませんプロシージャのパラメータの宣言を処理スニペット:
for (Object parameter : template.getParameterList()) {
if (parameter instanceof InputParameter) {
InputParameter inputParameter = (InputParameter) parameter;
declareParameter(new SqlParameter(inputParameter.getName(), inputParameter.getSqlType()));
inputParameterList.add(inputParameter);
} else if (parameter instanceof OutParameter) {
OutParameter outParameter = (OutParameter) parameter;
declareParameter(new SqlOutParameter(outParameter.getOutValueMapKey(), outParameter.getSqlType()));
setFunction(false);
}
}
コードは、現在、2つのパラメータのみ(PARAMETER_NAME、Oracle_type)をサポートします。 3番目のパラメータ(custom_data_type_name)を追加するには、コードを拡張する必要があります。追加パラメータは、STRUCT、DISTINCT、JAVA_OBJECT、名前付き配列型などのユーザー名付きの型に適用する必要があります。
「スケール」は、NUMERICおよびDECIMALデータ型に適用できる「スケール」です。
ベスト・アプローチは、org.springframework.jdbc.core.SqlParameterクラスとorg.springframework.jdbc.core.SqlOutParameterクラスを検査し、すべてのオプションをサポートするようにCamel Sql-Storedを拡張することです。
私はそうは思わない。そのオラクル・タイプにマップする方法がわからないのですか?どのようにプレーンJavaコードでそれを行うのですか?たぶん何かをカスタムタイプにフックするためにラクダに追加することができます –
java.sql.Struct(https://docs.oracle.com/cd/B28359_01/java.111/b31224/oraoot.htm)で動作するかどうか データ型名前はSTRUCT –