如何在带引号的占位符中使用查询? (perl / postgresql)
发布时间:2020-12-15 21:32:56 所属栏目:大数据 来源:网络整理
导读:我正在尝试执行以下脚本: #!/usr/bin/perl -wuse strict;use DBI;my $db = "Pg";my $db_database = "whatever";my $user = "whatever";my $password = "whatever";my $dbh = DBI-connect("dbi:$db:dbname=$db_database",$user,$password);my $query = $dbh-
我正在尝试执行以下脚本:
#!/usr/bin/perl -w use strict; use DBI; my $db = "Pg"; my $db_database = "whatever"; my $user = "whatever"; my $password = "whatever"; my $dbh = DBI->connect("dbi:$db:dbname=$db_database",$user,$password); my $query = $dbh->prepare (q{SELECT arrival_date - INTERVAL '? MINUTE' FROM emails LIMIT 1}) or die ("unable to prepare"); $query->execute(60) or die("unable to execute"); print $query->fetchrow_array,"n"; (arrival_date具有以下格式:带时区的时间戳NOT NULL默认CURRENT_TIMESTAMP) 问题是没有检测到问号占位符,因为它的内部单引号: DBD::Pg::st execute failed: called with 1 bind variables when 0 are needed 如果我使用qq {},$1占位符,并使用$dbh-> quote尝试了一些变体,它无济于事.我怎样才能做到这一点? 解决方法
您不能在引号内使用占位符.您可以使用SQL字符串连接,但在这种情况下,使用乘法更容易:
my $query = $dbh->prepare (q{SELECT arrival_date - ? * INTERVAL '1 MINUTE' FROM emails LIMIT 1}); $query->execute(60); 这样,在执行查询时,您不必在数字上附加“分钟”. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |