perl - 确定$ sth是否有行而不消耗它?

标签 perl dbi

使用DBI是否可以确定SELECT语句的已执行语句句柄是否返回任何行而不从中获取行?

IE。就像是:

use DBI;
...
my $sth = $dbh->prepare("SELECT ...");
$sth->execute;

if (..$sth will return at least one row...) {
  ...
} else { 
  ...
}

而且我想执行测试$sth will return at least one row而不对$sth执行任何提取方法。

注意-我不需要确切的行数(即$sth->rows),我只需要知道$sth->rows是否会> 0。

最佳答案

$ sth-> rows仍然是您的最佳选择。如您所说,只需检查它是否大于0。

if ($sth->rows > 0){
  # magic here!
}

除了! DBI文档说,这对于选择语句是不可靠的,直到所有行都已被获取。无法确定要预先获取多少行的方法。如果您需要了解此建议,则建议先做一个
select count(*) from <table>

参见this section of the DBI documentation

关于perl - 确定$ sth是否有行而不消耗它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8918992/

相关文章:

Perl 和参数化语句

linux - 使用 awk 和 sed 增加字符串中的数字

Perl:以编程方式删除 PostgreSQL 表索引,然后使用 DBD::Pg 在 COPY 之后重新创建

r - 在 R 中查询 PostgreSQL 数据库时如何修复警告消息 "Closing open result set, cancelling previous query"?

perl - 我可以从工具包模板文件中搜索结果集吗?

linux - 通过 SSH 的 Perl IDE

perl - 如何在没有文本的情况下获取准确的 Oracle 错误消息并存储在变量中

ruby 连接到 SQL Server 2005

perl - 哪一个代表null? undef 或空字符串

regex - 如果正则表达式和字符串都是变量,如何在 perl 中使用正则表达式