为什么我得到0E0作为DBI“execute”方法的返回值?

时间:2016-07-28 12:12:10

标签: perl dbi

我编写了一个示例Perl程序来删除数据库表中的数据。

这是我写的代码,

use DBI;

my $dbh = DBI->connect("DBI:Pg:host=192.168.12.23;port=5432;", "adhi");                                                                                
if ( $dbh ) {

    print "Connected successfully\n";

    my $exe = $dbh->prepare("delete from perl_test.test");
    my $res = $exe->execute();
    if ( $res ) {
        print "deleted the table successfully of rows: $res\n";
    }
}

如果我执行了上述操作,则应该打印成功的消息,然后删除已删除的行数。

如果表格为空,则表示正在打印0E0而不是0。 我不知道它是如何返回这样的值?

有人可以解释一下它是如何运作的吗?

1 个答案:

答案 0 :(得分:10)

以这种方式完成以允许测试操作是否成功。原因是'0E0'(作为字符串)是一个真值,但0在Perl中是一个假值。因此:

  1. 您可以在if中测试返回值以确定操作是否成功(true表示成功),

  2. 但您也可以使用返回值作为数字来了解已删除行的确切数量,因为当用作数字时0E0的计算结果为0.

  3. 如果您只需要已删除的行数,则可以使用$res + 0$res * 1。但只有在您测试过操作成功后才会这样做。