【问题标题】:help getting output from perl dbi code帮助从 perl dbi 代码中获取输出
【发布时间】:2011-07-15 10:47:24
【问题描述】:

我正在学习如何将 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};
   }

【问题讨论】:

    标签: perl


    【解决方案1】:

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

    【讨论】:

    • 谢谢,它甚至区分大小写。它必须是大写的。我不得不把SYSDATE
    【解决方案2】:

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

    return $row->{sysdate};
    

    【讨论】:

      猜你喜欢
      • 2011-07-04
      • 2012-04-05
      • 2014-06-10
      • 2018-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-08
      相关资源
      最近更新 更多