PL/Perlの話

21
PL/Perlの話 2008/09/13 株式会社Fusic 平田 哲

description

2008/09/13 @ Fukuoka.pm

Transcript of PL/Perlの話

Page 1: PL/Perlの話

PL/Perlの話

2008/09/13株式会社Fusic 平田 哲

Page 2: PL/Perlの話

自己紹介

平田 哲(id: debility)

・プログラマやってます

・Perl以外にも6つくらい

・最近はPHPが多い

・codecheck.inに参加

Page 3: PL/Perlの話

はじめに

PL/pgSQL

・SQL手続き言語

・関数定義とかで使う

→ 覚えると結構便利

Page 4: PL/Perlの話

PL/pgSQLは面倒

・配列の概念がない

・記法も当然違う

→ Perlで書けたらいいなあ

Page 5: PL/Perlの話

そこで

PL/Perlを使ってみた

・楽にインストールできる

・中身は完全にPerl

→ どんな感じになるの?

Page 6: PL/Perlの話

こんな感じCREATE OR REPLACE FUNCTION get_search_index_words(INTEGER) RETURNS TEXT AS $$

use Encode;

my($search_id) = $_[0];

my $query = “SELECT * FROM house_indos where id = $search_id;”;

my $house_infos_rec = spi_exec_query($query, 1);

my @ret_words_array = ();

# 条件に応じて検索文字列を生成していく・・・return join(“¥t”, @ret_words_array);

# 単数形単語を複数形にする関数sub singularize {

・・・

}

$$ LANGUAGE plperlu;

→ 誰が見てもPerlですね

Page 7: PL/Perlの話

ざっくりまとめ

PL/Perlのメリット

・Perlそのまま書ける

・モジュールも使える(*)

→ DBの関数作るのが楽になる(*)plperluの場合

Page 8: PL/Perlの話

注意するところ

plperlとplperlu

・plperl:制限あり

・plperlu:制限なし

→ できる限りはplperlで

Page 9: PL/Perlの話

気になるところ

パフォーマンスとか

・あくまでPerl

・PL/SQLとの使い分け

→ うまく使い分けましょう

Page 10: PL/Perlの話

というわけで

→ 今日はこのへんで。

Page 11: PL/Perlの話

ありがとうございました。

Page 12: PL/Perlの話

おまけ

Page 13: PL/Perlの話

PL/Perl↓

SQL手続き言語内でPerl記法を使う

Page 14: PL/Perlの話

ざっくり逆にする

※あくまでざっくり

Page 15: PL/Perlの話

Perl内でSQL記法を使う

↓???

Page 16: PL/Perlの話

そんなのあるわk

Page 17: PL/Perlの話

あった

Page 18: PL/Perlの話

Filter::SQLuse DBI; use Filter::SQL; # データベースハンドルを指定Filter::SQL->dbh(DBI->connect('dbi:mysql:test')) or die DBI->errstr;

# テーブルを作ったり消したりEXEC DROP TABLE IF EXISTS t;; EXEC CREATE TABLE t (v INT);;

# 値を挿入for (my $v = 0; $v < 5; $v++) { INSERT INTO t (v) VALUES ($v);;

}

# イテレートして値を表示foreach my $row (SELECT * FROM t;) { print "$row[0]¥n";

}

# 条件分岐if (SELECT ROW COUNT(*) FROM t; == 5) { print "5 rows in table¥n";

h}

→ てことは

Page 19: PL/Perlの話

PL/Perl内でFilter::SQL使って

なんてことも

Page 20: PL/Perlの話

すごく意味ないです。

Page 21: PL/Perlの話

以上です。