McDarren has asked for the wisdom of the Perl Monks concerning the following question:
(I thought this might have been a FAQ, but it doesn't appear to be)
I'm aware that table names cannot be used with place holders. From the DBI docs - "With most drivers, placeholders can't be used for any element of a statement that would prevent the database server from validating the statement and creating a query execution plan for it."
Fair enough.
But what is the usual/recommended approach when you strike a situation where you think you would _like_
to use placeholders for table names?
In my particular situation, I have something like (contrived example):
Obviously, it would be nice if I could do:INSERT INTO Widgets201003 (moo, baa, cluck) VALUES (?, ?, ?) INSERT INTO Widgets201004 (moo, baa, cluck) VALUES (?, ?, ?) INSERT INTO Widgets201005 (moo, baa, cluck) VALUES (?, ?, ?)
But of course, that doesn't work.INSERT INTO ? (moo, baa, cluck) VALUES (?, ?, ?)
I've thought about perhaps building a hash of SQL statements, using the table names as keys - but that feels really horrible.
So, how do others generally approach this?
Is there a module about that addresses this particular problem?
If it matters, I'm dealing with both MySQL & PostgreSQL
many thanks,
Darren :)
|
---|
Replies are listed 'Best First'. | |
---|---|
Re: DBI - Table names & placeholders
by ikegami (Patriarch) on Apr 24, 2010 at 05:09 UTC | |
by McDarren (Abbot) on Apr 24, 2010 at 06:17 UTC | |
by ikegami (Patriarch) on Apr 24, 2010 at 09:04 UTC | |
by McDarren (Abbot) on Apr 26, 2010 at 06:24 UTC | |
by ikegami (Patriarch) on Apr 26, 2010 at 07:08 UTC | |
| |
by ig (Vicar) on Apr 24, 2010 at 06:33 UTC | |
by Anonymous Monk on Dec 03, 2012 at 16:40 UTC | |
by erix (Prior) on Dec 03, 2012 at 17:19 UTC | |
Re: DBI - Table names & placeholders
by GrandFather (Saint) on Apr 24, 2010 at 05:00 UTC | |
Re: DBI - Table names & placeholders
by Ollie Jones (Novice) on Apr 24, 2010 at 23:49 UTC | |
Re: DBI - Table names & placeholders
by runrig (Abbot) on Apr 27, 2010 at 16:17 UTC |