如何在perl脚本中调用SQL

时间:2015-01-14 09:02:46

标签: sql oracle perl unix

我正在尝试使用此代码连接数据库并执行一些SQL查询,但每次都挂起。

my $connect_str = `/osp/local/etc/.oralgn $srv_name PSMF`;
my $sqlFile = "/osp/local/home/linus/amit/mytest.sql";
my ($abc, $cde)= split (/\@/ , $connect_str );
print "$abc";

$ORACLE_SID=SDDG00;
`export $ORACLE_SID`;

#chomp($abc);

#$abc=~ s/\s+$//;
`sqlplus $abc`;

open (SQL, "$sqlFile");


while (my $sqlStatement = <SQL>) {
   $sth = dbi->prepare($sqlStatement)
         or die (qq(Can't prepare $sqlStatement));

            $sth->execute()
                  or die qq(Can't execute $sqlStatement);
                  }

如何在Perl内调用SQL命令?

1 个答案:

答案 0 :(得分:3)

阅读documentation for the DBI module将是一个良好的开端。

您的问题似乎就是这一行。

$sth = dbi->prepare($sqlStatement)

您正尝试在“dbi”类上调用prepare方法。但是你的程序中没有一个名为“dbi”的类(或者,至少,我在你向我们展示的代码中看不到一个)。

要使用Perl中的数据库,您需要执行以下操作:

1 /加载DBI模块(注意,“DBI”,而不是“dbi” - Perl区分大小写。)

use DBI;

2 /连接到数据库并获取数据库句柄(有关connect()方法参数的更多详细信息,请阅读DBD::Oracle documentation

my $dbh = DBI->connect('dbi:Oracle:dbname', $user, $password);

3 /然后您可以使用此数据库句柄来准备SQL语句。

my $sth = $dbh->prepare($sqlStatement);