http://qs321.pair.com?node_id=667081

Errto has asked for the wisdom of the Perl Monks concerning the following question:

In my code I would like to do something like this:

my @ids = (1,2,3,4); my $sth = $dbh->prepare('select * from a_table where id in (?)'); $sth->execute(@ids);
and have it return me four rows for the four IDs I passed in. I realize that it couldn't work exactly like that because passing multiple arguments to execute provides values to multiple placeholders, but is there any way of achieving it? I use Oracle and occasionally MySQL.

The only alternative I know of is to load the IDs into some temporary table and use a sub-select. But I don't like the idea of having to insert a bunch of physical records just to run a query. What alternatives do I have? Thanks,

Update: I realized that the join ',', ('?') x @ids technique may be applicable here, but I would prefer to keep a single static SQL statement if I can.