perl - 为 SQL 查询的结果分配一个标量

标签 perl postgresql dbi

在我看来,必须有一种更好的方法来做到这一点,但我仍然没有找到。我确信我不是唯一一个可以使用一种方法来执行此操作的人:运行一个仅在一行中生成一个字段的 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/

相关文章:

ruby-on-rails - 基于 Rails hstore 值的查询

mysql - 使用 gem 'dbi' 与 ruby​​ 的 Mysql DB 连接问题

perl - Perl 中的赋值运算符 (=) 在内部是如何工作的?

postgresql - 在 postgres 中创建不区分大小写的 trigram-index 的正确方法是什么?

perl - 为什么我不能分配@b || Perl 中的@c 到@a?

database - postgresql 在数据库之间快速传输表

mysql - Perl DBI MySQL - 'field list' 中的未知列

perl - DBD::SQLite::st 执行失败:数据类型不匹配

perl - 使用系统时向家长传播信号

perl - 将参数传递给脚本,得到 : "Use of uninitialized value $ARGV[0]"