【发布时间】:2012-07-23 12:38:57
【问题描述】:
我有一个 Perl 脚本,它接受一个文件作为输入,其中包含 PL/SQL(用于语句和 DBMS_OUTPUT.PUT_LINE)。我需要运行建立一个数据库连接并在 Perl 脚本中运行该文件。pl/sql 有 Begin declare end 部分,上面有 for 语句,它正在写入使用逗号分隔的 3 列的数据(DBMS_OUTPUT.PUT_LINE)我已经展示了什么我在下面尝试过。对吗?
my $dbh = DBI->connect( "dbi:Oracle:$db", $username, $passwd ) ||
die( $DBI::errstr . "\n" );
$dbh->{AutoCommit} = 0;
$dbh->{PrintError} = 1;
open FILE, $sql_file or die "Could not open file";
$query = '';
while($line = <FILE>) {
chomp($line);
$query .= $line;
}
my $sth = $dbh->prepare($query);
$sth->execute();
while ( my @row = $sth->fetchrow_array() ) {
foreach (@row) {
print "$_";
}
print "\n";
}
【问题讨论】:
-
可以方便地让我们了解文件中可能包含的内容。你提到程序,然后什么都不显示。 pl/sql 是否有围绕它的开始/结束块等。它如何产生结果集 - 给定你的 perl 建议它可能。
-
它可以工作还是打印错误消息?此外,您应该始终使用
use strict和use warnings,并且您应该习惯open的三参数形式,这比您使用的形式更安全..
标签: database perl plsql plsqldeveloper