在我看来,必须有一种更好的方法来做到这一点,但我仍然没有找到。我确信我不是唯一一个可以使用一种方法来执行此操作的人:运行一个仅在一行中生成一个字段的 SQL 查询,然后将该字段分配给一个标量。 (就我而言,如果查询结果超过一个字段/行,那么我需要担心的事情比脚本中断更重要)。
例如,要从 SQL 服务器获取时间戳,可以使用:
my $timestamp;
my $cmd = $dbh->prepare('SELECT cast(now() AS timestamp);') or die $!;
$cmd->execute();
while (my @asd = $cmd->fetchrow_array) { $timestamp = $asd[0] }
虽然很脏,但确实有效。但是对于一个简单的任务来说,使用 4 行似乎有点太多了,特别是考虑到 perl 和 postgresql 通过 DBI 相互通信的效果如何。当然,我可以为其编写一个子例程,但是不是有一些原生的东西可以让我像使用 $dbh->do()
提交数据一样轻松地获取数据吗?
是的,我确实尝试过谷歌。
最佳答案
通常我会写:
$value = $dbh->selectall_arrayref($sql)->[0]->[0];
关于perl - 为 SQL 查询的结果分配一个标量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13594168/