perl POE::组件::池
下面的代码打印了SQL查询的结果,但是为什么它不插入记录呢?
#!/cbilldata/media/perl/bin/perl
use Data::Dumper;
use POE;
use POE qw( Component::Pool::DBI );
my $user_name = "username";
POE::Session->create(
inline_states => {
_start => sub {
my ($kernel, $heap) = @_[KERNEL, HEAP];
my $dbpool = POE::Component::Pool::DBI->new(
connections => 1,
dsn => "DBI:Oracle:192.168.90.225:1521/CRMDB",
username => "$user_name",
password => "password"
);
# Outstanding queries keep the calling session alive.
$dbpool->query(
callback => "handle_result",
query => "select price from cost where rownum < 2 and price= ?",
params => ["0.03872515"],
# 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 "$record->{PRICE} \n";
}
my $dbpool = $heap->{dbpool};
# Queries which do not return data should use the do method.
# If no callback is supplied, no callback happens. This is
# suitable for queries where the result is not necessarily
# important.
$dbpool->do(
query => "INSERT INTO cost (cost_id,operation_id,price,description) VALUES (?,?,?,?)",
args => [10000685233, 1, 1, 'Western Samoa'],
);
# Ask for a clean shutdown.
$dbpool->shutdown;
},
},
);
POE::Kernel->run();
The code below prints the result of the SQL query, but why won't it insert the record?
#!/cbilldata/media/perl/bin/perl
use Data::Dumper;
use POE;
use POE qw( Component::Pool::DBI );
my $user_name = "username";
POE::Session->create(
inline_states => {
_start => sub {
my ($kernel, $heap) = @_[KERNEL, HEAP];
my $dbpool = POE::Component::Pool::DBI->new(
connections => 1,
dsn => "DBI:Oracle:192.168.90.225:1521/CRMDB",
username => "$user_name",
password => "password"
);
# Outstanding queries keep the calling session alive.
$dbpool->query(
callback => "handle_result",
query => "select price from cost where rownum < 2 and price= ?",
params => ["0.03872515"],
# 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 "$record->{PRICE} \n";
}
my $dbpool = $heap->{dbpool};
# Queries which do not return data should use the do method.
# If no callback is supplied, no callback happens. This is
# suitable for queries where the result is not necessarily
# important.
$dbpool->do(
query => "INSERT INTO cost (cost_id,operation_id,price,description) VALUES (?,?,?,?)",
args => [10000685233, 1, 1, 'Western Samoa'],
);
# Ask for a clean shutdown.
$dbpool->shutdown;
},
},
);
POE::Kernel->run();
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论