Perl - DBI - 如何处理数组而不是单个值?

时间:2014-04-10 11:55:47

标签: sql perl dbi

我有运行SQL查询select rec_data from foo where id=?的代码,我使用返回值执行某些操作。

我现在有一个ID @queryIDs;数组,如何运行相同的查询并收集结果以便输入此数组中的值?感谢

2 个答案:

答案 0 :(得分:3)

这样的事情可行:

my $sql = 'select rec_data from foo where id in (';
$sql .= join ',', ("?") x @queryIDs;
$sql .= ') order by id';

my $sth = $dbh->prepare($sql);

$sth-> execute(@queryIDs);

# rest of code will be the same as you have now

答案 1 :(得分:0)

动态SQL是不安全的。

要安全地执行相同操作,请在SQL中拆分列表,这取决于RDBMS和版本。例如,Oracle 11r2通过XMLDB有一个很好的标记化方法,可以通过简单的搜索或MODEL子句找到它们,以免那些害怕使用它的人。 SQL Server也可以使用XML。如果没有RDBMS和版本,很难建议做什么。