如何在Postgresql中定义外部API函数?

时间:2014-04-14 13:10:07

标签: postgresql postgresql-9.2

在我的项目中,我需要添加一个外部API函数,例如:

SELECT c.name
FROM c,s 
WHERE
   checkresult(c.name);

函数checkresults()返回TURE OR FALSE,在这个函数中我需要调用一些30方的API函数。我怎样才能在Postgresql中实现这一点?谢谢。

1 个答案:

答案 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';

http://pgxn.org/dist/www_fdw/

https://github.com/cyga/www_fdw/(SO通过编码_

来中断链接