我正在使用Perl DBD :: Oracle嘗試將XML字符串數組批量插入Oracle XMLTYPE列。如果我批量插入到CLOB中,但我嘗試通過Strawberry Perl插入XMLTYPE列時,它可能會崩潰。批量插入Oracle XMLTYPE使用Perl
有沒有人能夠從Perl批量插入XMLTYPE?
以下是兩個代碼片段。一個用於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'嗎? $表。 '(XMLCONTENT)VALUES(XMLTYPE(?))'或'INSERT INTO'。 $表。 '(XMLCONTENT)VALUES(XMLPARSE(CONTENT?WELLFORMED))''然後將您的XML作爲CLOB發送? –
@collapsar版本1.74 – user3676476