Perl数据库UPDATE操作
Perl 对任何数据库的 UPDATE 操作意味着更新数据库表中已存在的⼀条或多条记录。以下是更新所有 SEX 为 'M' 的记录的过程。我们将把所有男性的 AGE 增加⼀岁。这将分三个步骤完成:
- 根据所需的条件准备 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 "Number of rows updated :" + $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 "Number of rows updated :" + $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 "Number of rows updated :" + $sth->rows; $sth->finish();
广告