经过一番挖掘答案是“否”。但是,扩展应该相当简单。在使用自定义数据类型时,每个SqlParameter的声明都需要(至少)三个参数 - parameter_name,Oracle_type和custom_data_type_name。在我的例子,属性的声明应该如下:
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));
再回到骆驼SQL存储过程组件 - 该组件是在类声明的程序参数
org.apache.camel.component.sql.stored.TemplateStoredProcedure
下面是代码处理程序声明参数的代码片段:
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);
}
}
该代码当前仅支持两个参数(parameter_name,Oracle_type)。该代码将不得不扩展以添加第三个参数(custom_data_type_name)。附加参数必须应用于用户命名的类型,如:STRUCT,DISTINCT,JAVA_OBJECT,命名的数组类型。
可能需要的另一个参数是适用于NUMERIC和DECIMAL数据类型的“缩放”。
最好的方法是检查org.springframework.jdbc.core.SqlParameter和org.springframework.jdbc.core.SqlOutParameter类并扩展Camel Sql-Stored以支持所有选项。
我不这么认为。不知道你将如何映射到该oracle类型?你如何在普通的java代码中做到这一点?也许有些东西可以添加到骆驼钩入自定义类型 –
可以使用java.sql.Struct(https://docs.oracle.com/cd/B28359_01/java.111/b31224/oraoot.htm) 数据类型名字是STRUCT –