2011年 09月 04日

SQL::NamedPlaceholder

もしかしたら既にあるのかもしれないのですが、見つからないのでかっとなってあげてしまいました。一部 ORM に実装されているような named placeholder を単体でやるモジュールです。

「ORM 使いたくねーし、DBI 直でやるし! あ、でも placeholder の順番間違えると嫌だな…」ってときに便利な気がします。

  use SQL::NamedPlaceholder qw(bind_named);

  my ($sql, $bind) = bind_named(q[
      SELECT *
      FROM entry
      WHERE
          user_id = :user_id
  ], {
      user_id => $user_id
  });

  $dbh->prepare_cached($sql)->execute(@$bind);