我尝试从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;
}
答案 0 :(得分:1)
您可以使用DBI->trace
记录操作并实际查看正在准备的语句。
查看this question的答案。这应该显示是否正在创建不正确的SQL查询。
但是,我愿意打赌这个问题不是你认为的问题。使用调试器验证这段代码是否真的导致了问题,或者创建一个简单的示例脚本来测试这是否真的是问题。