Re: PQprepare question
От | Gregory Stark |
---|---|
Тема | Re: PQprepare question |
Дата | |
Msg-id | 87ps571o61.fsf@oxford.xeocode.com обсуждение исходный текст |
Ответ на | Re: PQprepare question (Tom Lane <tgl@sss.pgh.pa.us>) |
Список | pgsql-interfaces |
"Tom Lane" <tgl@sss.pgh.pa.us> writes: > Michael Meskes <meskes@postgresql.org> writes: >> According to the docs parameters are referenced as $1, $2, and so. Is >> there a reason not to use "?" as placeholder? > > It's an operator name. Most drivers such as JDBC and DBD::Pg do allow you to use ? parameters because they're the ODBC standard. But they're just replacing them with $1 and so on behind your back. If you want your code to be portable to other databases then it makes sense to use ? But otherwise there are a few advantages to using $1, $2... a) You can change your query to possibly use the arguments in a different order without having to change the execute parameters as well. b) You can use a parameter multiple times in a query without having to burden your execute call site with multiple copies of the parameter. I think you lose if you have an operator ? and want to use these drivers though. Even if you only use $n parameters the driver may still get confused. (At the very least if you ever have a query with no parameters and a ? operator in it). -- Gregory Stark EnterpriseDB http://www.enterprisedb.com
В списке pgsql-interfaces по дате отправления: