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, > > > >