使用execute_array时如何在perl dbi中指示null?

时间:2019-05-17 15:15:46

标签: dbi

我知道使用undef是使用perl dbi插入时指示空值的规定方式。但是,当在其中插入列表的地方使用execute_array时,该如何完成?如果我未定义列表中的元素,那会不会缩小列表并增加它与其他列表中其他值的作用?

示例代码:

my @col1_arr = (1,2,3,4,5);
my @col2_arr = (1.1,2.2,3.3,4.4,5.5);
my @col3_arr = ("aaa","bbb","ccc","ddd","eee");

# prepare the insert statement
my $sql = "insert into test_bulk_load (col1,col2,col3) values (?,?,?)";
my $sth = $dbh->prepare($sql) or die "-F- Failed to prep '$sql'\n";

# insert the recs
my $cnt = $sth->execute_array({ ArrayTupleStatus => \my @tuple_status},\@col1_arr,\@col2_arr,\@col3_arr) or die "-F- Failed to execute '$sqf'\n";

比方说,对于col2_arr的第二个值,我想插入一个空值。

我似乎记得有一个“空指标”的概念。这可能是很久以前的,当时我正在使用C / Oracle。对于每个要插入的列表,将存在“空指示符”(整数)的影子列表。该影子列表的每个元素都是0或1,指示值是否为null。列表及其阴影将以某种方式绑定在一起,然后传递给插入。 perl / dbi有这样的东西吗?

我知道我可以通过不执行execute_array ...“一次插入”来完成我想要的事情,但是出于性能原因,我想保留execute_array。

0 个答案:

没有答案