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