2011-05-20 73 views
0

下面的代码应该打印十个结果,而是打印十个“test-ite”。为什么不显示它从数据库中获得的结果?为什么这些POE线程在打印时不会显示?

use Data::Dumper; 
use POE; 
use POE qw(Component::Pool::DBI); 
POE::Session->create(
    inline_states => { 
     _start => sub { 
      my ($kernel, $heap) = @_[KERNEL, HEAP]; 

      my $dbpool = POE::Component::Pool::DBI->new(
       connections => 10, 
       dsn   => "DBI:Oracle:192.168.6.1:1524/CDB", 
       username => "Terry", 
       password => "Peller" 
      ); 

      # Outstanding queries keep the calling session alive. 
      $dbpool->query(
       callback => "handle_result", 
       query => "select price from cost where description= ?", 
       params => ["Mayotte"], 

       # userdata => "example" 
      ); 

      $heap->{dbpool} = $dbpool; 
     }, 

     handle_result => sub { 
      my ($kernel, $heap, $results, $userdata) = @_[KERNEL, HEAP, ARG0, ARG1]; 

      # Will be an arrayref of hashrefs. 
      for my $record (@$results) { 
       print "test-ite \n"; 
       print $record->{Mayotte}; 
      } 

      my $dbpool = $heap->{dbpool}; 

      # Ask for a clean shutdown. 
      $dbpool->shutdown; 
     }, 
    }, 
); 
POE::Kernel->run(); 

回答

2

它看起来并不像返回的行,将有一个“马约特岛”一栏,也许你想写print $record->{price},而不是print $record->{Mayotte}

我建议在这里使用Data::Dumper学校调试 - 找出什么是错的,你可以添加一个use Data::Dumper; warn Dumper($record);到循环:)

+0

感谢名单霍布斯它的工作 – finidi 2011-05-20 14:28:29

相关问题