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

adh*_* .b 5 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";
    }
}
Run Code Online (Sandbox Code Playgroud)

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

如果表是空的,则打印0E0而不是0.我不知道它是如何返回这样的值?

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

Rus*_*lov 11

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

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

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

如果只需要删除的行数,可以使用$res + 0$res * 1.但只有在您测试了操作成功之后.