我正在查看 PostgreSQL "服务器编程" 文档,以编写存储过程。我想要一个存储过程调用现有的外部 shell 脚本执行任务,然后返回结果。
我在文档中没有找到这个功能。这个功能被支持吗?
我在文档中没有找到这个功能。这个功能被支持吗?
不可信的PLs(例如PL / perlu或PL / Pythonu)以及C用户定义的函数都可以使用。
但通常不是一个好主意。如果调用外部程序,然后回滚事务,则外部程序将不知道回滚。您正在退出事务管理。
通常最好使用NOTIFY
将工作发送到连接并LISTEN
事件的守护程序。
以下是我在Ubuntu上的操作方法。请注意,安装PostgreSQL时,默认情况下不会安装plperl。
> sudo apt-get install postgresql-plperl
> sudo --user=postgres psql my_database
# CREATE EXTENSION IF NOT EXISTS plperlu;
# CREATE OR REPLACE FUNCTION foo() RETURNS TEXT AS $$
return `/bin/echo -n "hello world!"`;
$$ LANGUAGE plperlu;
# select foo();
foo
-------------
hello world!
(1 row)