CREATE or replace FUNCTION test() RETURNS boolean AS $$
$filename = '/home/postgres';
if (-e $filename) {
exec /home/postgres/test.sh &
return true; }
return false;
$$ LANGUAGE plperlu;
exec /home/postgres/test.sh及其显示语法错误。你能帮忙如何将bash脚本调用到postgres功能/程序中
据推测,代码需要在语法上有效Perl。所以你需要清理几个位。
CREATE or replace FUNCTION test() RETURNS boolean AS $$
my $filename = '/home/postgres';
if (-e $filename) {
system '/home/postgres/test.sh' and return 1;
}
return;
$$ LANGUAGE plperlu;
我改变了一些事情:
$filename
声明变量my
system
而不是exec
。 exec
取代了当前的进程 - 实际上永远不会返回到调用函数system
希望传递一个字符串。所以我在命令周围添加了引号and
在流量控制语句中通常比&&
更好(并且总是比&
更好,这是用于位翻转,而不是流量控制)true
和false
,所以我用1替换了true
(这是Perl中的真值)。我从其他false
语句中删除了return
- return
的默认行为是返回false值我没有Postgresql安装来测试它。如果仍然无效,请告诉我们您遇到的错误。
pl / sh存在,可以用作过程语言。