我编写了一个示例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
。
我不知道它是如何返回这样的值?
有人可以解释一下它是如何运作的吗?
答案 0 :(得分:10)
以这种方式完成以允许测试操作是否成功。原因是'0E0'
(作为字符串)是一个真值,但0
在Perl中是一个假值。因此:
您可以在if
中测试返回值以确定操作是否成功(true表示成功),
但您也可以使用返回值作为数字来了解已删除行的确切数量,因为当用作数字时0E0的计算结果为0.
如果您只需要已删除的行数,则可以使用$res + 0
或$res * 1
。但只有在您测试过操作成功后才会这样做。