[
https://issues.apache.org/jira/browse/CAMEL-6091?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13744667#comment-13744667
]
Zemian Deng commented on CAMEL-6091:
------------------------------------
BTW, I believe there is a workaround without using the patch also, but it's
more involve like this:
{{sql:INSERT INTO [NEW_TABLE] SELECT * FROM [OLD_TABLE] WHERE ID =
#?alwaysPopulateStatement=true&prepareStatementStrategy=#myStrategy}}
And then user can customize this {{myStrategy}} like this
{code}
strategy = new DefaultSqlPrepareStatementStrategy() {
@Override
public void populateStatement(PreparedStatement ps, Iterator<?>
iterator, int expectedParams) throws SQLException {
invoked = true;
super.populateStatement(ps, iterator, expectedParams + 1);
}
};
{code}
Noticed the {{expectedParams + 1}} that should fixed user's use case.
But the patch would be more straightforward to use though.
> Improvement to SqlProducer class
> --------------------------------
>
> Key: CAMEL-6091
> URL: https://issues.apache.org/jira/browse/CAMEL-6091
> Project: Camel
> Issue Type: Improvement
> Components: camel-sql
> Affects Versions: 2.10.3
> Reporter: Chris Miles
> Priority: Minor
> Fix For: Future
>
> Attachments: CAMEL-6091.patch
>
>
> I have came across a bug with the Microsoft SQL Server driver (4.0) in where
> the folowing line is problematic:
> int expected = ps.getParameterMetaData().getParameterCount();
> If I run the following query through the component:
> INSERT INTO [NEW_TABLE] SELECT * FROM [OLD_TABLE] WHERE ID = #
> expected is set to 0 which results in my value not being set.
> Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: The value is not
> set for the parameter number 1.
> While this is a SQL Server issue, unfortunately the source is not available
> and an update is not likely any time soon to return the correct meta data. It
> would be handy if this Producer put the query preperation a little more into
> the hands of the user. I.e. let me say there are 5 parameters to be prepared
> along with the 5 values to use.
> If the user has manually put 5 items in a Map in the body, then can we not
> just use the map length to identify how many values and then iterate them.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira