Я использую Perl DBD :: Oracle, чтобы попытаться объединить массив строк XML в столбец XML XMLTYPE. Я могу заставить его работать, если я вставляю массив в CLOB, но когда я пытаюсь вставить столбец XMLTYPE через Strawberry Perl, он сработает.Массовая вставка в Oracle XMLTYPE с использованием Perl
Может ли кто-нибудь иметь возможность вставлять в XMLTYPE с Perl?
Вот два фрагмента кода. Один для CLOB, а второй для XMLTYPE ....
sub save_xml {
$log->write("Inserting XML messages into table:$table, in $mode: mode"); my @status; my $sql='INSERT INTO ' . $table . ' (XMLCONTENT) VALUES (?)'; my $sth = $dbh->prepare_cached($sql) || die "Cannot prepare statement: $DBI::errstr"; $sth->bind_param_array(1,\@xmldocuments) || die "Cannot bind parameter array: $DBI::errstr"; $sth->execute_array({ArrayTupleStatus=>\@status}) || die "Cannot bulk insert into table: $table: $DBI::errstr"; $log->write("Inserted $status rows into table: $table"); }
sub save_xml {
$log->write("Inserting XML messages into table:$table, in $mode: mode"); my @status; my $sql='INSERT INTO ' . $table . ' (XMLCONTENT) VALUES (?)'; my $sth = $dbh->prepare_cached($sql) || die "Cannot prepare statement: $DBI::errstr"; $sth->bind_param_array(1,\@xmldocuments,{ ora_type => ORA_XMLTYPE }) || die "Cannot bind parameter array: $DBI::errstr"; $sth->execute_array({ArrayTupleStatus=>\@status}) || die "Cannot bulk insert into table: $table: $DBI::errstr"; $log->write("Inserted $status rows into table: $table"); }
Какая версия DBD :: Oracle вы используете? – collapsar
Пробовал ли вы «INSERT INTO». $ table. '(XMLCONTENT) VALUES (XMLTYPE (?))' Или 'INSERT INTO '. $ table. '(XMLCONTENT) VALUES (XMLPARSE (CONTENT? WELLFORMED))', а затем отправить XML как CLOB? –
@collapsar Version 1.74 – user3676476