Skip to content

Instantly share code, notes, and snippets.

@vividsnow

vividsnow/sql.pl Secret

Last active December 31, 2015 16:48
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save vividsnow/8d294801959975730fc3 to your computer and use it in GitHub Desktop.
Save vividsnow/8d294801959975730fc3 to your computer and use it in GitHub Desktop.
sql select mod
use strict;
use warnings;
use Data::Dump 'dd';
sub query (@) {
my ($in, $p, $o, $l) = @_;
(join' ', $in, map @$_, grep $_->[1],
$p ? [where => join ' and ', map $_.' = ?', keys%$p] : (),
$o ? ['order by' => join ',', @$o] : (),
$l ? [limit => join ',', ('?') x @$l] : ()),
$p ? values%$p : (), $l ? @$l : () }
sub fetch (@) {
my ($dbh, $q, @p) = @_;
$dbh->selectall_arrayref($q, {}, @p) }
dd query 'select i from t', {qw(a 1 b 2)}, ['id desc','a asc'], [0,1];
# fetch $dbh, query 'select i from t', {qw(a 1 b 2)}, ['id desc','a asc'], [0,1];
dd query 'select i from t', {qw(a 1 b 2)}, undef, [0];
dd query 'select i from t', {}, ['a'], [];
dd query 'select i from t', (undef)x2, [1];
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment