帮助从perl dbi代码获取输出

时间:2011-07-15 02:34:56

标签: perl

我正在学习如何将perl与dbi一起用于oracle。我只是试图测试获取输出,但我无法打印出这个简单选择的结果。

如果有人可以帮我解决这个问题,或者甚至向我展示更好的写作方式,我将不胜感激。感谢。

use strict;
use File::Basename;
use DBI;
use Time::localtime;
use POSIX qw/uname/;

use vars qw/$dbh $scr $computer_name/;
$scr = basename($0, '');
$computer_name = (uname())[1];

 $dbh = DBI->connect('dbi:Oracle:testdb', 'test', 'test', 
                    {RaiseError => 0, PrintError => 0, AutoCommit => 0}) ||
       die "$scr: connect error on $computer_name [$DBI::errstr]";

my $out = get_val();
print "The date is $out\n";
$dbh->disconnect;

sub get_val
{
  my $sth = $dbh->prepare(q{
        SELECT sysdate 
        FROM   dual}) ||
      die "$scr: prepare error on $computer_name [$DBI::errstr]";
  $sth->execute;
  my $row = $sth->fetchrow_hashref;
  $sth->finish;
  return $row->{VALUE};
   }

2 个答案:

答案 0 :(得分:1)

fetchrow_hashref返回的哈希中的键是列名。您从返回的hashref获取了键'VALUE',这不是查询中的列。

答案 1 :(得分:0)

fetchrow_hashref()将每列作为哈希中的键返回。 return语句应为:

return $row->{sysdate};