NAME
Bio::DB::Query::SqlGenerator - Object representing an SQL Query
SYNOPSIS
use Bio::DB::Query::BioQuery;
use Bio::DB::Query::SqlGenerator;
# get a Bio::DB::Query::AbstractQuery or derived query somehow
my $query = Bio::DB::Query::BioQuery->new(-tables => ["table1, table2"]);
$query->where(["and",
["or", "col4 = ?", "col5 = 'somevalue'"],
["col2 = col4", "col6 not like 'abcd*'"]]);
# use the generator to turn a query object into SQL
my $sqlgen = Bio::DB::Query::SqlGenerator->new(-query => $query);
my $sql = $sqlgen->generate_sql();
print "SQL: $SQL\n";
# then bind as necessary, and execute ...
DESCRIPTION
This represents the strategy pattern for generating a SQL statement given a Query object.
Eventually there should be interfaces for this pattern as well as for the Query.
AUTHOR Chris Mungall, Hilmar Lapp
Chris Mungall, cmungall@fruitfly.org Hilmar Lapp, hlapp at gmx.net
This is essentially code ripped out of SqlQuery.pm and AbstractQuery.pm (both by Chris Mungall), put into its own module as a strategy pattern.
APPENDIX
The rest of the documentation details each of the object methods. Internal methods are usually preceded with a _
new
query
Title : query
Usage : $obj->query($newval)
Function: Get/set query object (a Bio::DB::Query::AbstractQuery or derived
instance).
Example :
Returns : value of query (a Bio::DB::Query::AbstractQuery or derived)
Args : new value (a Bio::DB::Query::AbstractQuery or derived, optional)
generate_sql
Usage: $sqlstmt = $sqlgen->generate_sql; $dbh->do($sqlstmt);
$sqlstmt = $sqlgen->generate_sql($query); $dbh->do($sqlstmt);
Flattens query object into a SQL statement.