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 stashed, identified by name, and return a prepared statement handle.

SEE ALSO

Ima::DBI SQL::Bibliosoph SQL::Snippet

AUTHOR

Sebastian Nowicki <sebnow@gmail.com>