Details
Description
When you use a vendor-specific JDBC type in camel-sql you need to use its value instead of its label.
For instance, if you use oracle if you want to call a stored procedure that returns a FIXED_CHAR type you need to write:
<to uri="sql-stored:PROCEDURE1(OUT 999 result)?dataSource=oracle"/>
All values are defined here: https://docs.oracle.com/cd/E16338_01/appdev.112/e13995/constant-values.html#oracle_jdbc_OracleTypes_ARRAY
You can notice that there are negative values in this list (CURSOR for instance). Unfortunately the negative values aren't handled by the parser which leads to the following exception
org.apache.camel.component.sql.stored.template.ast.ParseRuntimeException: Field -10 not found from java.procedureName.Types at org.apache.camel.component.sql.stored.template.ast.ParseHelper.parseSqlType(ParseHelper.java:41) at org.apache.camel.component.sql.stored.template.generated.SSPTParser.OutParameter(SSPTParser.java:92) at org.apache.camel.component.sql.stored.template.generated.SSPTParser.Parameter(SSPTParser.java:60) at org.apache.camel.component.sql.stored.template.generated.SSPTParser.parse(SSPTParser.java:23) at org.apache.camel.component.sql.stored.template.TemplateParser.parseTemplate(TemplateParser.java:31) at org.apache.camel.component.sql.stored.CallableStatementWrapperFactory.getTemplateStoredProcedure(CallableStatementWrapperFactory.java:71) at org.apache.camel.component.sql.stored.CallableStatementWrapper.populateStatement(CallableStatementWrapper.java:104) at org.apache.camel.component.sql.stored.SqlStoredProducer$1.execute(SqlStoredProducer.java:69) at org.apache.camel.component.sql.stored.CallableStatementWrapper.call(CallableStatementWrapper.java:55) at org.apache.camel.component.sql.stored.SqlStoredProducer.process(SqlStoredProducer.java:43)
Attachments
Issue Links
- links to