在我的项目中,我需要添加一个外部API函数,例如:
SELECT c.name
FROM c,s
WHERE
checkresult(c.name);
函数checkresults()返回TURE OR FALSE,在这个函数中我需要调用一些30方的API函数。我怎样才能在Postgresql中实现这一点?谢谢。
答案 0 :(得分:1)
基本上有两种方法可以做到这一点。
一种是使用过程语言。在安装相关语言后,这可以使用您想要的任何语言:
http://www.postgresql.org/docs/current/static/sql-createlanguage.html
Postgres通常使用Perl和Python语言编译。所以在安装之后, plerlu(因为你需要远程访问功能),你可以这样做:
CREATE FUNCTION funcname (argument-types) RETURNS return-type AS $$
# PL/Perl function body
$$ LANGUAGE plperlu;
http://www.postgresql.org/docs/current/interactive/plperl-funcs.html
另一种方法是使用外部数据包装器:
http://wiki.postgresql.org/wiki/Foreign_data_wrappers
这些需要(编辑?)用C语言编写。上面引用的页面中有多个例子。有关从第三方API获取的示例,请参阅Twitter fdw,例如:
SELECT from_user, created_at, text FROM twitter WHERE q = '#postgresql';
http://pgxn.org/dist/twitter_fdw/
https://github.com/umitanuki/twitter_fdw
(SO通过编码_
)
有关更通用的内容,请参阅www fdw:
select * from www_fdw_geocoder_google where address='1600 Amphitheatre Parkway,Mountain View, CA';
https://github.com/cyga/www_fdw/
(SO通过编码_
)