从PERL中的DBI语句转储准备的sql查询

前端之家收集整理的这篇文章主要介绍了从PERL中的DBI语句转储准备的sql查询前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在Perl中使用DBI连接到我的Postgresql数据库.
一切正常,但在我的调试(打印结果等)中,我无法看到perls DBI模块准备的查询是否真的正确.

我有这样的事情:

$sth->prepare( qq{SELECT * FROM company WHERE companyname LIKE ? AND city = ?});
$sth->execute( $name.'%',$city);

调用execute之后,我无法看到SQL查询的外观,因为execute是将参数绑定到查询的最新步骤.

我想有一些像$sth-> getLastExecutedQuery()之类的东西来查看查询的样子.

在这种情况下,函数getLastExecutedQuery()将返回:

SELECT * FROM company WHERE companyname LIKE 'Company Name%' AND city = 'City name';

有没有办法得到这个?它仅用于调试目的.

解决方法

DBI支持以下内容
有DBI->跟踪($tracefile_handle)方法(跟踪所有DBI交互)或$dbh->跟踪($tracefile_handle),它只跟踪特定句柄上的交互.输出默认为STDERR,但是通过提供$tracefile_handle,您可以显式地将输出发送到不同的文件(或者只使用shell重定向).

DBD :: pg还支持$h-> trace(‘sql’);您的DBD驱动程序必须支持功能,但幸运的是DBD :: Pg支持功能.

DBI的文档,在CPAN – DBI,
对于DBD :: Pg,CPAN – DBD::Pg确实为您提供了跟踪时需要了解的所有信息.

猜你在找的Perl相关文章