Movatterモバイル変換


[0]ホーム

URL:


はてラボはてな匿名ダイアリー
ようこそ ゲスト さんログインユーザー登録
< http://www.men-joy.jp/archives... |30歳サラリーマン、... >

2012-09-18

perlSQL::Makerはスゲー便利 その2

http://anond.hatelabo.jp/20120917013417 の続き。

前回は、使ってるモジュールしか書かなかったんで、具体的な使い方を、

my $condition =SQL::Maker::Condition-&gt;new;$condition-&gt;add('colom1' =&gt; "$value1");                          # colum1 = $value1$condition-&gt;add('colom2',{'like' =&gt; "%$value2%"});               # colum2 like '%$value1%'$condition-&gt;add('colom3',{'between' =&gt; ["$value3","$value4"]});  # colom3between $value3 and $value4my $q =SQL::Maker::Select-&gt;new(driver =&gt; 'XXXXX');              # XXXXXは、MySQL等の指定をする# where句に条件を設定$q-&gt;set_where($condition);                                       # where句を抽出select項目やテーブルの指定を全くしてないので、$sql_conditionには# "FROM WHERE (colum1 = ?) and (colom2 like ?) and (colom3between ? and ?)" という文字列がセットmy $sql_condition = $q-&gt;as_sql();                                # "FROM" を消して、WHERE句だけにする $sql_condition =~ s/FROM//;                                      # 設定した条件の配列my @binds = $q-&gt;bind;                                            #SQLの読み込み(条件部分をのぞくopen my $fh, "&lt;", "./sql.txt";my $sql = do{ local $/; &lt;$fh&gt;};close $fh;# 生成したWHERE句とソート順をSQLに追加$sql = $sql.$sql_condition;#コネクションを取得my $conection =DBI-&gt;connect($datasource) or die ( 'could notconnect' );my $sth = $conection-&gt;prepare($sql);# 条件に値を埋め込むfor(my $i = 0; $i&lt;= $#binds; $i++){    $sth-&gt;bind_param($i+1,$binds[$i]);}#SQLの実行$sth-&gt;execute;

という形でやってます

増田だとpre記法でも「<」「>」が正しく変換されないんで、読み替えてください。

やろうと思えば、select項目や読み込むテーブルもPGの中で指定して組み立てることも

出来るんだけど、そこまでやると面倒くさいし、そこまで動的にコントロールする必要

サイトでは無かったんで、条件部分のみ動的に変更できるようにしてます

動的SQLperlで作ろうと思っている人の参考になれば幸いです。

参考

http://search.cpan.org/~chiba/SQL-Maker/lib/SQL/Maker/Select.pm

http://search.cpan.org/~chiba/SQL-Maker/lib/SQL/Maker/Condition.pm

風俗口コミ横断SEARCH

http://fko-s.info/index.html

Permalink |記事への反応(0) | 00:17

このエントリーをはてなブックマークに追加ツイートシェア

記事への反応 -

記事への反応(ブックマークコメント)

全てのコメントを見る

人気エントリ

注目エントリ

ログインユーザー登録
ようこそ ゲスト さん
Copyright (C) 2001-2025 hatena. All Rights Reserved.

[8]ページ先頭

©2009-2025 Movatter.jp