use Akar::DBI::Statement qw(sql sql_in sql_param sql_param_inout);
my $start_date = '2007-06-01';
my $statement = "SELECT id, filetype, filesource_name"
. "\nFROM manggis.files "
. "\nWHERE filetype IN ". sql_in( qw(durian durianloader_in durianloader_out) )
. "\n AND state IN ". sql_in('f', 'F')
. "\n AND created > to_date(". sql_param($start_date ). ", 'YYYY-MM-DD')";
my ( $text, $values_ref ) = $statement->text_and_values;
####
# text:
'SELECT id, filetype, filesource_name
FROM manggis.files
WHERE filetype IN (?, ?, ?)
AND state IN (?, ?)
AND created > to_date(?, \'YYYY-MM-DD\')'
# values_ref is
[ 'durian', 'durianloader_in', 'durianloader_out', 'f', 'F', '2007-06-01' ]
####
my $cnt_statement = "SELECT count(*) FROM ($statement)";
####
use Interpolation
'sqlp' => sub { sql_param(@_) },
'E' => 'eval';
$statement = <<"END_SELECT";
SELECT id, filetype, filesource_name
FROM manggis.files
WHERE filetype IN $E{ sql_in( qw(durian durianloader_in durianloader_out) ) }
AND state IN $E{ sql_in('f', 'F') }
AND created > to_date( $sqlp{ $start_date } , 'YYYY-MM-DD');
END_SELECT
####
my $retval;
my $statement = <<"END_PSQL";
BEGIN
manggis.create_new_file(
'filetype' => $E{ sql_param($filetype) },
'file_id' => $E{ sql_param_inout(\$retval, 40) },
);
END;
END_PSQL
####
$dbh->selectrow_array($statement->text_attr_values);
$statement->prepare_and_bind_on($dbh);
####
my @row = $dbh->selectrow_array($statement_or_text);
my $sth = $dbh->prepare($statement_or_text);
####
my $statement2 = sql('SELECT * FROM manggis.files WHERE state = :state');
$statement2->bind_param(':state', 'F');