perl POE::组件::池

发布于 2024-11-15 12:30:56 字数 1895 浏览 2 评论 0原文

下面的代码打印了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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文