PL/Perlのはなし(LT)@syachiHokkaido.pm Casual#13テーマ「モダンModule入門」2013-05-15
Perlで書かれたモジュールをPostgreSQLから呼ぶ
PL/Perlのはなし
いわゆるストアドプロシージャPostgreSQL上でPerlが動くよ
QuickStarttestdb=# CREATE LANGUAGE plperl;CREATE LANGUAGEtestdb=# CREATE OR REPLACE FUNCTION perl_set_int(int)testdb-# RET...
結果testdb=# select perl_set_int(5);perl_set_int--------------012345(6 rows)
超モダン:p
plperl はuseが使えなかったりサーバ上のファイルが見れなかったり制限付きで安全
そんな制限が不要の方はplperluを使います。CREATE LANGUAGE plperlu;
例Acme::MorningMusume のメンバー一覧を返してみる
testdb=# CREATE TYPE musumetype AS (testdb-# name_ja text, age integer, hometown text, class integer);testdb=# CREATE OR R...
testdb=#	 SELECT	 *	 FROM	 musumetachi()	 ORDER	 BY	 age	 DESC;	 	 name_ja	 	 	 |	 age	 |	 	 hometown	 	 |	 class---------...
Have fun !!
Upcoming SlideShare
Loading in …5
×

PL/Perlのはなし

1,219 views
1,093 views

Published on

Hokkaido.pm Casual#13で発表したスライドです。

Published in: Devices & Hardware
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,219
On SlideShare
0
From Embeds
0
Number of Embeds
13
Actions
Shares
0
Downloads
2
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

PL/Perlのはなし

  1. 1. PL/Perlのはなし(LT)@syachiHokkaido.pm Casual#13テーマ「モダンModule入門」2013-05-15
  2. 2. Perlで書かれたモジュールをPostgreSQLから呼ぶ
  3. 3. PL/Perlのはなし
  4. 4. いわゆるストアドプロシージャPostgreSQL上でPerlが動くよ
  5. 5. QuickStarttestdb=# CREATE LANGUAGE plperl;CREATE LANGUAGEtestdb=# CREATE OR REPLACE FUNCTION perl_set_int(int)testdb-# RETURNS SETOF INTEGER AS $$testdb$# foreach (0..$_[0]) {testdb$# return_next($_);testdb$# }testdb$# return undef;testdb$# $$ LANGUAGE plperl;
  6. 6. 結果testdb=# select perl_set_int(5);perl_set_int--------------012345(6 rows)
  7. 7. 超モダン:p
  8. 8. plperl はuseが使えなかったりサーバ上のファイルが見れなかったり制限付きで安全
  9. 9. そんな制限が不要の方はplperluを使います。CREATE LANGUAGE plperlu;
  10. 10. 例Acme::MorningMusume のメンバー一覧を返してみる
  11. 11. testdb=# CREATE TYPE musumetype AS (testdb-# name_ja text, age integer, hometown text, class integer);testdb=# CREATE OR REPLACE FUNCTION musumetachi()testdb-# RETURNS SETOF musumetype AS $$testdb$# use strict;testdb$# use utf8;testdb$# use Encode;testdb$# use Acme::MorningMusume;testdb$# foreach (Acme::MorningMusume->new->members()) {testdb$# return_next({testdb$# name_ja => Encode::decode_utf8($_->name_ja),testdb$# age => Encode::decode_utf8($_->age),testdb$# hometown => Encode::decode_utf8($_->hometown),testdb$# class => Encode::decode_utf8($_->class),testdb$# });testdb$# }testdb$# return undef;testdb$# $$ LANGUAGE plperlu;CREATE FUNCTION
  12. 12. testdb=# SELECT * FROM musumetachi() ORDER BY age DESC; name_ja | age | hometown | class------------+-----+------------+------- 中澤裕子 | 39 | 京都府 | 1 石黒彩 | 35 | 北海道 | 1 保田圭 | 32 | 千葉県 | 2 飯田圭織 | 31 | 北海道 | 1 安倍なつみ | 31 | 北海道 | 1 市井紗耶香 | 29 | 千葉県 | 2 矢口真里 | 29 | 神奈川県 | 2 吉澤ひとみ | 28 | 埼玉県 | 4 福田明日香 | 28 | 東京都 | 1 石川梨華 | 27 | 神奈川県 | 4 藤本美貴 | 27 | 北海道 | 6 後藤真希 | 27 | 東京都 | 3 高橋愛 | 26 | 福井県 | 5 紺野あさ美 | 26 | 北海道 | 5 加護亜依 | 25 | 奈良県 | 4....略結果
  13. 13. Have fun !!

×