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]>