DBD :: Oracle插入sydate而不是null

时间:2014-03-24 11:21:15

标签: sql oracle perl

我尝试从perl中将空值插入到Oracle的日期字段中,但不是空值,而是最终插入sysdate。当我从sqlplus中执行相同操作时,它会插入空值。

我的代码(只是重要部分)

use DBI;
use DBD::Oracle qw(ORA_RSET);

...

eval {
    $sth = $dbh->prepare(q{
         INSERT INTO MY_TABLE
             (VAL1, VAL2, VAL3, ENTRY_DATE, PROCESSED_DATE)
         VALUES (?,?,?,?,?)});
    my $rv = $sth->execute($VAL1, $VAL2, $VAL3, undef, undef);
    $insert_counter++;
};
if ( $@ ) {
    $FILE_PROCESS_STATUS = FILE_INVALID;
    logg("e", "$@");
}
if ( $FILE_PROCESS_STATUS = FILE_VALID ) {
    $dbh->commit;
}

1 个答案:

答案 0 :(得分:1)

您可以使用DBI->trace记录操作并实际查看正在准备的语句。 查看this question的答案。这应该显示是否正在创建不正确的SQL查询。

但是,我愿意打赌这个问题不是你认为的问题。使用调试器验证这段代码是否真的导致了问题,或者创建一个简单的示例脚本来测试这是否真的是问题。