Branch: Tag:

2000-04-29

2000-04-29 00:11:09 by Francesco Chemolli <li@kinkie.it>

Added support for (emulated) parametric queries.

Rev: lib/modules/Sql.pmod/msql.pike:1.6
Rev: lib/modules/Sql.pmod/mysql.pike:1.8
Rev: lib/modules/Sql.pmod/odbc.pike:1.4
Rev: lib/modules/Sql.pmod/postgres.pike:1.8
Rev: lib/modules/Sql.pmod/rsql.pike:1.2
Rev: lib/modules/Sql.pmod/sql_util.pmod:1.3
Rev: lib/modules/Sql.pmod/sybase.pike:1.2

1:   /* -  * $Id: sql_util.pmod,v 1.2 1999/07/01 20:25:38 grubba Exp $ +  * $Id: sql_util.pmod,v 1.3 2000/04/29 00:10:59 kinkie Exp $    *    * Some SQL utility functions.    * They are kept here to avoid circular references.
9:      //.   //. File: sql_util.pmod - //. RCSID: $Id: sql_util.pmod,v 1.2 1999/07/01 20:25:38 grubba Exp $ + //. RCSID: $Id: sql_util.pmod,v 1.3 2000/04/29 00:10:59 kinkie Exp $   //. Author: Henrik Grubbström (grubba@idonex.se)   //.   //. Synopsis: Some SQL utility functions
33:   {    throw(({ "Function not supported in this database.", backtrace() }));   } +  + //. - build a raw SQL query, given the cooked query and the variable bindings + //. It's meant to be used as an emulation engine for those drivers not + //. providing such a behaviour directly (i.e. Oracle). + //. The raw query can contain some variables (identified by prefixing + //. a colon to a name or a number(i.e. :var, :2). They will be + //. replaced by the corresponding value in the mapping. + //. > query + //. The query + //. > bindings + //. Optional mapping containing the variable bindings. Make sure that + //. no confusion is possible in the query. If necessary, change the + //. variables' names + string emulate_bindings(string query, mapping(string|int:mixed)|void bindings) + { +  array(string)k, v; +  if (!bindings) +  return query; +  v=Array.map(values(bindings), +  lambda(mixed m) {return (stringp(m)?m:(string)m);}); +  k=Array.map(indices(bindings),lambda(string s){return ":"+s;}); +  return replace(query,k,v); + }