Как я могу указать ноль в Perl DBI при использовании execute_array? - PullRequest
0 голосов
/ 17 мая 2019

Я знаю, что использование undef является предписанным способом указания нулевого значения при использовании perl dbi insert.Но как это сделать при использовании 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";

Допустим, чтодля 2-го значения col2_arr я хочу вставить ноль.

Кажется, я помню, что существовало понятие "нулевые индикаторы".Возможно, это было очень давно, когда я работал с C / Oracle.Теневой список «нулевых индикаторов» (целых) будет существовать для каждого вставляемого списка.Каждый элемент этого теневого списка был 0 или 1, указывая, были ли значения нулевыми или нет.Список и его тень будут каким-то образом связаны друг с другом, а затем переданы для вставки.Есть ли в Perl / dbi что-нибудь подобное?

Я знаю, что могу выполнить то, что хочу, без выполнения execute_array ... "вставлять по одному", но я бы хотел сохранитьexecute_array по соображениям производительности.

...