I think you would have to do a CAST like this:

insert into sometable (id, date_column)
select id, DATE(#enteredDate#)
from someothertable

I haven't tried it, so no guarantees, but that's my best guess from the
docs.

Jeff Butler




On 2/2/07, Nathan Maves <[EMAIL PROTECTED]> wrote:

Having never used DB2 can you not just specify what the JDBC type is for
that column?

Try adding #enteredDate:DATE# or #enteredDate:TIMESTAMP# to your inline
parameter map.

Nathan



On 2/2/07, Jeff Butler <[EMAIL PROTECTED]> wrote:
>
> Date literals are a real pain.  I believe that the default toString() on
> a Java Date is invalid for DB2.  So you'll need to transform that Date
> object into a properly formatted string for DB2 - like you used in your
> hardcoded example.
>
> Jeff Butler
>
>
>
> On 2/2/07, Tom Henricksen <[EMAIL PROTECTED]> wrote:
> >
> >  We tried that and that works for everything but the date fields.  The
> > date is coming across Fri Feb 02 09:42:11 CST 2007 where it needs
> > quotes around it. It gets a DB2 42601 "A character, token, or clause
> > is invalid or missing."   I tried adding \' $enteredDate$\' and that
> > didn't work either.  When I hard coded the dates as ' 2007-2-1 3:28:
> > 06.0' in the xml it worked fine.
> >
> >
> >
> > Thanks,
> >
> > Tom
> >
> >
> >
> > -----Original Message-----
> > *From:* Jeff Butler [mailto: [EMAIL PROTECTED]
> > *Sent:* Friday, February 02, 2007 9:23 AM
> > *To:* user-java@ibatis.apache.org
> > *Subject:* Re: Insert using select for values
> >
> >
> >
> > DB2 SQLSTATE 42610 means "A parameter marker is not allowed"
> >
> >
> >
> > My guess is that DB2 is complaining about the parameters in the select
> > list (enteredBy, enteredDate, etc.)  Try changing to simple substitution
> > ($enteredBy$, $enteredDate$, etc.)
> >
> >
> >
> > Jeff Butler
> >
> >
> >
> >
> >
> > On 2/2/07, *Tom Henricksen* < [EMAIL PROTECTED]> wrote:
> >
> > We are using Insert with select to populate the values.  We are using
> > the select for most of the values but there are a few that we try to pass
> > in.  The variables seem to be the problem.
> >
> > We are using iBatis(2.1.5).  We also use p6spy (captures all SQL to
> > log) and when we take the SQL insert and run it against db2( 8.2) it
> > works fine.  The variables are getting populated correctly.
> >
> >
> >
> > iBatis SQLMap syntax
> >
> >
> >
> >             INSERT INTO ${schemaPharm}.BATCHPRINTPRCS(
> >
> >                   BATCHPRINTPRCSID,
> >
> >                   CMPLXID,
> >
> >                   INVLOCID,
> >
> >                   DISPENSINGID,
> >
> >                   BATCHTYPEID,
> >
> >                   BATCHNMBR,
> >
> >                   PRVDRID,
> >
> >                   CMNTID,
> >
> >                   STATUS,
> >
> >                   ENTEREDBY,
> >
> >                   ENTEREDDT,
> >
> >                   ORIGENTEREDBY,
> >
> >                   ORIGENTEREDDT,
> >
> >                   ENTEREDLOCID)
> >
> >
> >
> >                   SELECT
> >
> >                         BATCHPRINTID,
> >
> >                         CMPLXID,
> >
> >                         INVLOCID,
> >
> >                         DISPENSINGID,
> >
> >                         BATCHTYPEID,
> >
> >                         BATCHNMBR,
> >
> >                         PRVDRID,
> >
> >                         1,
> >
> >                         1,
> >
> >                         #enteredBy#,
> >
> >                         #enteredDate#,
> >
> >                         #enteredBy#,
> >
> >                         #enteredDate#,
> >
> >                         #enteredLocationId#
> >
> >                   FROM ${schemaPharm}.BATCHPRINT
> >
> >                   WHERE BATCHNMBR = #batchNmbr#
> >
> >
> >
> > When this runs we get the following error.
> >
> >
> >
> > *java.lang.reflect.InvocationTargetException*
> >
> >       at sun.reflect.NativeMethodAccessorImpl.invoke0(* Native Method*)
> >
> >       at sun.reflect.NativeMethodAccessorImpl.invoke(*
> > NativeMethodAccessorImpl.java:39* )
> >
> >       at sun.reflect.DelegatingMethodAccessorImpl.invoke(*
> > DelegatingMethodAccessorImpl.java:25* )
> >
> >       at java.lang.reflect.Method.invoke(* Method.java :324* )
> >
> >       at com.advtechgrp.remoting.ResponseBuilder.getResponseUnsafe( *
> > ResponseBuilder.java:118* )
> >
> >       at com.advtechgrp.remoting.ResponseBuilder.getResponse(*
> > ResponseBuilder.java:52* )
> >
> >       at com.advtechgrp.remoting.RemotingServlet.doPost(*
> > RemotingServlet.java:98* )
> >
> >
> >
> > Caused by: *com.advtechgrp.exceptions.UnexpectedException* :
> >
> > --- The error occurred in
> > com/advtechgrp/bop/pharmacy/rx/data/BatchPrintProcessVsp.xml.
> >
> > --- The error occurred while applying a parameter map.
> >
> > --- Check the
> > BatchPrintProcessVsp.insertByBatchNumber-InlineParameterMap.
> >
> > --- Check the statement (update failed).
> >
> > --- Cause: *com.ibm.db2.jcc.a.SqlException* : DB2 SQL error: SQLCODE:
> > -418, SQLSTATE: 42610, SQLERRMC: null
> >
> >       at
> > com.advtechgrp.bop.pharmacy.rx.service.BatchPrintProcessService.save(
> > *BatchPrintProcessService.java:121* )
> >
> >       at
> > 
com.advtechgrp.bop.pharmacy.web.pages.rx.PrintBatchLabelsBean.setBatchNumber(
> > * PrintBatchLabelsBean.java:258* )
> >
> >
> >
> > Insert from p6spy
> >
> >
> >
> > INSERT INTO 
pharm.BATCHPRINTPRCS(BATCHPRINTPRCSID,CMPLXID,INVLOCID,DISPENSINGID,
> >
> >
> >
> > 
BATCHTYPEID,BATCHNMBR,PRVDRID,CMNTID,STATUS,ENTEREDBY,ENTEREDDT,ORIGENTEREDBY,
> >
> > ORIGENTEREDDT,ENTEREDLOCID) SELECT BATCHPRINTID, CMPLXID,INVLOCID,
> > DISPENSINGID,
> >
> > BATCHTYPEID,BATCHNMBR,PRVDRID,1, 1, 54365,'2007-02-02 08:51:04.857',54365,
> >
> >
> > '2007-02-02 08:51:04.857',258 FROM pharm.BATCHPRINT WHERE BATCHNMBR =
> > 50341
> >
> >
> >
> > This runs fine when run directly against db2.
> >
> >
> >
> > Thanks,
> >
> > Tom
> >
> >
> >
> >
> >
>
>

Reply via email to