【问题标题】:perl-dbi - retrieving statement as executedperl-dbi - 检索已执行的语句
【发布时间】:2013-07-22 19:42:45
【问题描述】:

所以我有这个极其简化的 sn-p:

@cmd_arry = ("Bob Newhart", "54");
$sqlCmd = "UPDATE foobar SET name = ?, age = ?";
$sth = $dbh->prepare( $sqlCmd);
$resultCnt = $sth->execute( @cmd_arry);
if( my $errMsg = $dbh->errstr) {
  $what_actually_executed = <what?>

问题:如何在数据绑定发生后检索语句 AS EXECUTED 即?如果出现问题,我想要一种方法来捕获执行的实际语句,包括绑定值。

【问题讨论】:

    标签: perl dbi


    【解决方案1】:

    你问:

    如何在数据绑定发生后检索语句 AS EXECUTED ?

    通常你不能。大多数非玩具 RDBMS 将执行绑定服务器端,而不是客户端,并且大多数非玩具 perl DBD 驱动程序将利用这一点。检查数据库服务器的日志。

    但是,DBI's tracing facility 可能会给您足够的帮助。祝你好运。

    更新

    在 cmets 中的 user4035 链接到相关的 perlmonks thread,它提供了所需绑定变量插值的模拟。

    【讨论】:

    • 正如 pilcrow 所说,几乎没有 DBD 会真正将您的参数替换到 SQL 中。 SQL 通常发送到数据库引擎,参数在执行时单独发送。您可以查看search.cpan.org/~timb/DBI-1.628/DBI.pm#ParamValues 以了解实际发送了哪些参数。
    猜你喜欢
    • 2013-11-17
    • 2016-10-31
    • 2015-10-31
    • 2013-10-27
    • 2010-11-17
    • 2016-04-18
    • 2013-04-24
    • 2019-02-01
    • 1970-01-01
    相关资源
    最近更新 更多