I've not really used Mojo, but I think you probably want something like this...
app->attr(dbh => sub {
my $self = shift;
my $dsn = 'dbi:Oracle:schema';
my $usr = 'Scott';
my $pas = 'tiger';
my $dbh = DBI->connect_cached( $dsn, $usr, $pas );
return $dbh;
});
app->attr(cached_query => sub {
my $self = shift;
my $sql = 'SQL QUERY HERE';
return $self->dbh->prepare_cached( $sql );
});
# later
get '/query' => sub{
my $c = shift;
my $dbh = $c->app->dbh;
my $sth = $c->app->cached_query;
# probably pull @values out from GET query or POST data
my @values = do { ... };
my $results = $dbh->selectall_arrayref($sth, {}, @values);
# and so on
};