groovy-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Thom DeCarlo <t...@thomdecarlo.com>
Subject Re: Trouble with groovy.sql
Date Wed, 03 May 2017 19:32:05 GMT
Hi John,
Thanks for looking into this! (and showing that I'm not nuts!)

I created a new JIRA issue:
https://issues.apache.org/jira/browse/GROOVY-8174

Hopefully I got that right. This is my first JIRA entry.

-Thom


On Wed, May 3, 2017 at 2:49 PM John Wagenleitner <
john.wagenleitner@gmail.com> wrote:

> On Wed, May 3, 2017 at 10:59 AM, Thom DeCarlo <thom@thomdecarlo.com>
> wrote:
>
>> I'm using the groovy.sql libraries inside of a Java program and having
>> trouble with parameter substitution. My code looks like this:
>>
>> Map<String, Object>params = new HashMap<String, Object>();
>> params.clear();
>> params.put("source_system_id", Integer.valueOf(6));
>> params.put("rec_loc_txt", "Test" + randomNum.toString());
>> params.put("created_dt_tm", jts);
>> String mdSqlString = "INSERT INTO MD_CATALOG " +
>>                  "      (SOURCE_SYSTEM_ID, REC_LOC_TXT, CREATED_DT_TM)" +
>>                  "      VALUES" +
>>                  "      (:source_system_id, :rec_loc_txt,
>> :created_dt_tm)";
>>
>> try {
>> List<List<Object>> keys = mdds.executeInsert(params, mdSqlString);
>> } catch (SQLException e) {
>> // TODO Auto-generated catch block
>> e.printStackTrace();
>> }
>>
>> But, when it runs, I get an exception thrown that says:
>>
>> Exception in thread "main" java.lang.IllegalArgumentException: Found 4
>> parameter placeholders but supplied with 3 parameters
>> at groovy.sql.Sql.setParameters(Sql.java:4116)
>> at groovy.sql.Sql.getPreparedStatement(Sql.java:4394)
>> at groovy.sql.Sql.executeInsert(Sql.java:2610)
>> at groovy.sql.Sql.executeInsert(Sql.java:2674)
>> at org.mitre.mac.Main.main(Main.java:70)
>>
>> Now, I only see 3 placeholders for my 3 parameters. Can anyone tell me
>> where I'm going wrong?
>>
>
>
>
> Hi Thom,
>
> I did a quick test with Groovy 2.4.11 and Oracle 11.2.0.4 (ojdbc6.jar
> 11.2.0.4 and ojdbc7.jar 12.1.0.2.0) and get the same error.  From what I am
> seeing Oracle changes the sql to:
>
> INSERT INTO MD_CATALOG (SOURCE_SYSTEM_ID, REC_LOC_TXT, CREATED_DT_TM)
> VALUES (?, ?, ?) RETURNING ROWID INTO ?
>
> adding the extra bind parameter for ROWID and this is reflected in the
> call to metaData.getParameterCount() [1].
>
> Would be good if you could open an issue for this [2] with the Groovy and
> database versions (and jdbc driver) you experience this with.
>
> John
>
> [1]
> https://github.com/apache/groovy/blob/GROOVY_2_4_11/subprojects/groovy-sql/src/main/java/groovy/sql/Sql.java#L4115
>
> [2] https://issues.apache.org/jira/browse/GROOVY
>
>

Mime
View raw message