// file : odb/mssql/query.txx // copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC // license : ODB NCUEL; see accompanying LICENSE file namespace odb { namespace mssql { // query // template query:: query (const query_column& c) : binding_ (0, 0) { // Cannot use IS TRUE here since database type can be a non- // integral type. // append (c.table (), c.column ()); append ("="); append (val_bind (true, c.prec (), c.scale ()), c.conversion ()); } // query_column // template query query_column:: in (const T& v1, const T& v2) const { query q (table_, column_); q += "IN ("; q.append (val_bind (v1, prec_, scale_), conversion_); q += ","; q.append (val_bind (v2, prec_, scale_), conversion_); q += ")"; return q; } template query query_column:: in (const T& v1, const T& v2, const T& v3) const { query q (table_, column_); q += "IN ("; q.append (val_bind (v1, prec_, scale_), conversion_); q += ","; q.append (val_bind (v2, prec_, scale_), conversion_); q += ","; q.append (val_bind (v3, prec_, scale_), conversion_); q += ")"; return q; } template query query_column:: in (const T& v1, const T& v2, const T& v3, const T& v4) const { query q (table_, column_); q += "IN ("; q.append (val_bind (v1, prec_, scale_), conversion_); q += ","; q.append (val_bind (v2, prec_, scale_), conversion_); q += ","; q.append (val_bind (v3, prec_, scale_), conversion_); q += ","; q.append (val_bind (v4, prec_, scale_), conversion_); q += ")"; return q; } template query query_column:: in (const T& v1, const T& v2, const T& v3, const T& v4, const T& v5) const { query q (table_, column_); q += "IN ("; q.append (val_bind (v1, prec_, scale_), conversion_); q += ","; q.append (val_bind (v2, prec_, scale_), conversion_); q += ","; q.append (val_bind (v3, prec_, scale_), conversion_); q += ","; q.append (val_bind (v4, prec_, scale_), conversion_); q += ","; q.append (val_bind (v5, prec_, scale_), conversion_); q += ")"; return q; } template template query query_column:: in_range (I begin, I end) const { query q (table_, column_); q += "IN ("; for (I i (begin); i != end; ++i) { if (i != begin) q += ","; q.append (val_bind (*i, prec_, scale_), conversion_); } q += ")"; return q; } } }