Hello,

I got a mail from IBM OpenSource Application Development Team.

On DB2 "" is NG, undef is OK. 
On Oracle both "" and undef are OK. 

Regards,
Hirosi Taguti  

> -----Original Message-----
> From:  Hirosi Taguti
> Sent: Wednesday, August 25, 2010 10:33 AM
> To: 'dbi'
> Subject: RE: DB2, how to insert TIMESTAMP
> 
> Hello,
> 
> I send this old mail to dbi ML.
> Someone told I should prepare 2 statement.
> But it is not easy when the table has 2 or 3 TIMESTAMP columns.
> And now I found I can INSERT NULL into TIMESTAMP column with 
> the same script.
> I think this is DB2 issue.
> Or other reason, DBI or some else?
> 
> I tested in:
> <OK>
> SunOS 5.10
> Oracle 10g
> perl 5.8.8
> DBI 1.607
> DBD::Oracle 1.21
> <Not OK>
> AIX 5.3
> DB2 8.2
> perl 5.8.2
> DBI 1.53
> DBD::DB2 1.0
> 
> Regards,
> H.T. 
> 
> > -----Original Message-----
> > Sent: Friday, October 30, 2009 10:16 AM
> > To: dbi
> > Subject: DB2, how to insert TIMESTAMP
> > 
> > Hello,
> > 
> > Is there a way to insert TIMESTAMP data or null
> > by 1 SQL?
> > 
> > $stmt = "INSERT INTO T_TAB1_T (C1, MEMO, T1) VALUES(?,?,?)";
> > This cannot insert null data.
> > 
> > $stmt = "INSERT INTO T_TAB1_T (C1, MEMO, T1) 
> > VALUES(?,?,TIMESTAMP(?))";
> > This is invalid param marker SQLSTATE=42610.
> > 
> > Regards,
> > H.T.
> > 
> > DROP TABLE T_TAB1_T;
> > CREATE TABLE T_TAB1_T (
> >      C1   INTEGER NOT NULL,
> >      MEMO VARCHAR(20),
> >      T1   TIMESTAMP);
> > 
> > #!/usr/bin/perl
> > use strict;
> > use DBI;
> > 
> > my ($dbh, $sth, $stmt);
> > my ($seq, $seq_ok);
> > 
> > # connect
> > $dbh = DBI->connect("dbi:DB2:mydb", "ibm", "user",
> >       {RaiseError => 1, AutoCommit => 1});
> > die "Error connect: $DBI::errstr" unless $dbh;
> > print "conn OK: $con\n";
> > 
> > # $stmt = "INSERT INTO T_TAB1_T (C1, MEMO, T1) 
> > VALUES(?,?,?)";  # error when null
> > $stmt = "INSERT INTO T_TAB1_T (C1, MEMO, T1) 
> > VALUES(?,?,TIMESTAMP(?))";  # invalid param karker SQLSTATE=42610
> > print "\$stmt: $stmt\n";
> > eval {
> >   $sth = $dbh->prepare($stmt);
> >   print "prepare ok\n";
> > };
> > 
> > $seq = 0;
> > while (<DATA>) {
> >   ++$seq;
> >   chomp;
> >   my ($C1, $MEMO, $T1) = split /,/;
> >   print "$seq DATA: C1($C1), MEMO($MEMO), T1($T1)\n";
> >   $sth->execute($C1, $MEMO, $T1);
> >   print "$seq ok\n";
> > }
> > print "=== end ===\n";
> > eval {
> >   $sth->finish();
> >   $dbh->commit();
> >   $dbh->disconnect();
> > };
> > 
> > __DATA__
> > 1,insert data,2009-10-29 00:00:23.880004
> > 1,insert null,
> > 
> > 

Reply via email to