--Simplified interpolation of variables into SQL statements (Perl module)
ABSTRACT
SQL-Interpolate is a collection of Perl modules that simplify the interpolatation of Perl variables into SQL statements. SQL::Interpolate converts a list of intermixed SQL fragments and variables into a conventional SQL string and list of bind values, which can be used directly or passed onto DBI.
EXAMPLE SYNTAX
# SQL::Interpolate use SQL::Interpolate qw(:all); my @colors = ('blue', 'green'); my($sql, @bind) = sql_interp q[SELECT * FROM mytable WHERE color IN], \@colors, q[AND y =], \$x, q[OR], {z => 3, w => 2} ; # Result: # $sql = "SELECT * FROM mytable WHERE color IN (?, ?) " . # "AND y = ? OR (z = ? AND w = ?)"; # @bind = ('blue', 'green', $x, 3, 2); # Passing any of the above results to DBI $dbh->selectall_arrayref($sql, undef, @bind); # DBIx::Interpolate use DBIx::Interpolate qw(:all); my $dbx = new DBIx::Interpolate($dbh); $dbx->selectall_arrayref( q[SELECT * FROM table WHERE color IN], \@colors, q[AND y =], \$x ); # SQL::Interpolate::Macro use SQL::Interpolate::Macro qw(:all); sql_interp q[SELECT * FROM mytable WHERE], sql_and( sql_if($blue, q[color = "blue"]), sql_if($shape, sql_fragment(q[shape =], \$shape)) ), q[LIMIT 10]; # SQL::Interpolate::Filter use SQL::Interpolate FILTER => 1, qw(:all); ($sql, @bind) = sql_interp sql[ SELECT * FROM mytable WHERE color IN @colors AND y = $x OR {z => 3, w => 2} ];
Related Links
Copyright (c) 2003-2005 David Manura. This module is licensed under the same terms as Perl itself.
Contact me for bug reports.