对任何数据库的Perl UPDATE操作意味着更新数据库表中已经可用的一个或多个记录。以下是更新所有SEX为'M'的记录的过程。在这里,我们将所有男性的年龄提高一年。这将采取三个步骤-
根据所需条件准备SQL查询。这将使用 prepare() API完成。
执行SQL查询以从数据库中选择所有结果。这将使用 execute() API完成。
释放语句句柄。这将使用 finish() API完成。
如果一切正常,请执行此操作,否则您可以回滚完整的事务。有关提交和回滚API,请参见下一部分。
my $sth = $dbh->prepare("UPDATE TEST_TABLE SET AGE = AGE + 1 WHERE SEX = 'M'"); $sth->execute() or die $DBI::errstr; print "更新的行数:" + $sth->rows; $sth->finish(); $dbh->commit or die $DBI::errstr;
有时可能没有事先给出条件。因此,您可以使用绑定变量,该变量将在运行时获取所需的值。Perl DBI模块使用问号代替实际值,然后execute()
在运行时通过API传递实际值。以下是示例-
$sex = 'M'; my $sth = $dbh->prepare("UPDATE TEST_TABLE SET AGE = AGE + 1 WHERE SEX = ?"); $sth->execute('$sex') or die $DBI::errstr; print "更新的行数:" + $sth->rows; $sth->finish(); $dbh->commit or die $DBI::errstr;
在某些情况下,您想设置一个值,该值不会事先提供,因此可以按以下方式使用绑定值。在此示例中,所有男性的收入将设置为10000。
$sex = 'M'; $income = 10000; my $sth = $dbh->prepare("UPDATE TEST_TABLE SET INCOME = ? WHERE SEX = ?"); $sth->execute( $income, '$sex') or die $DBI::errstr; print "更新的行数:" + $sth->rows; $sth->finish();