Perl   发布时间:2022-04-07  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了perl – 使用这种替代机制进行DBI查询有什么问题?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
DBI documentation中,这是多次执行查询的推荐代码:
$sth = $dbh->prepare_cached($statement);
$sth->execute(@bind);
$data = $sth->fetchall_arrayref(@attrs);
$sth->finish;

但是,我看到许多*查询方法允许传递一个准备好的和缓存的语句句柄来代替查询字符串,这使得这成为可能:

$sth = $dbh->prepare_cached($statement);
$data = $dbh->selectall_arrayref($sth,\%attrs,@bind);

这种方法有什么问题吗?我还没有看到它在野外使用过.

FWIW,我对这两个实现进行了基准测试.当在第一个实现中使用fetchall_arrayref和在第二个实现中使用selectall_arrayref查询连续两行时,第二种方法显得略微(4%).

解决方法

它没有任何问题,只要你打算只进行一次获取.当您使用select * _ *方法时,所有数据都会返回到一个块中.我的DBI代码更像是这样的:
$sth = $dbh->prepare_cached($statement);
$sth->execute(@bind);
while (my $row = $sth->fetch) { # alias for fetchrow_arrayref
  # do something with @$row here
}

使用select * _ *方法没有相当于此的东西.

如果您要调用fetchall_ *(或者您只获取1行),那么继续使用带语句句柄的select * _ *方法.

大佬总结

以上是大佬教程为你收集整理的perl – 使用这种替代机制进行DBI查询有什么问题?全部内容,希望文章能够帮你解决perl – 使用这种替代机制进行DBI查询有什么问题?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: