NAME
SQL::Stash - A stash for SQL queries
SYNOPSIS
package SQL::Stash::Foo;
use base qw(SQL::Stash);
__PACKAGE__->stash('select_foo', 'SELECT * FROM Foo');
1;
package main;
my $dbh = DBI->connect('dbi:SQLite:dbname=:memory:', '', '');
my $stash = SQL::Stash::Foo->new();
my $sth = $stash->retrieve('select_foo');
$sth->execute();
while(my $row = $sth->fetchrow_arrayref()) {
print("$_\n") for @$row;
}
DESCRIPTION
SQL::Stash is a simple query library for SQL statements. SQL statements
are populated at the class level. SQL::Stash objects prepare these
statements as late as possible (i.e. before they are executed).
SQL::Stash is in concept very similar to Ima::DBI, but differs by having
instance-specific database handles and statements, and by supporting
externally defined database handles.
METHODS
new
SQL::Stash->new(%args);
Designated constructor. Instantiates a new SQL::Stash object. The "dbh"
argument, a DBI-like object, must be provided.
my $dbh = DBI->connect('dbi:SQLite:dbname=:memory:', '', '');
my $stash = SQL::Stash->new('dbh' => $dbh);
stash
SQL::Stash::Foo->stash($name, $statement, $should_cache);
$stash->stash($name, $statement, $should_cache);
Stash an SQL "statement". The method can be called both on the class and
instance. If the class method is called the "statement" will be added to
the global stash. If the instance method is called the "statement" will
only be added to the instance-specific "stash".
The "name" is used as an identifier in order to later retrieve it. The
"should_cache" parameter is optional and specifies whether "prepare()"
or "prepare_cached()" is used to prepare the "statement". It defaults to
"true".
SQL::Stash::Foo->stash('select_foo', 'SELECT * FROM Foo');
retrieve
$stash->retrieve($name, @_);
Prepare the statement stored via stash, identified by "name", and return
a prepared statement handle. The SQL statement may be modified by
transform_sql before it is prepared.
transform_sql
$stash->transform_sql($sql, @_)
Transform the SQL statement before it is prepared to enable dynamically
generated statements. The default implementation is to use sprintf, but
sub-classes may override this method to perform any transformation.
$stash->transform_sql("SELECT * FROM %s", "table");
#=> SELECT * FROM table
SEE ALSO
Ima::DBI SQL::Bibliosoph SQL::Snippet
AUTHOR
Sebastian Nowicki <
[email protected]>