PL/sh函数参数不可见:如何正确向PostgreSQL的PL/sh函数传参?
解决PL/sh函数参数不可见的问题
哈哈,这个坑我之前踩过!你现在用$1、$2来取参数是不对的——PL/sh根本不是通过Shell的位置变量传递参数的,而是把每个参数放到了命名环境变量里,这就是你调用后输出为空的核心原因。
把你的函数改成下面这样就能正常获取参数了:
CREATE OR REPLACE FUNCTION createUserFolder(var text, var1 text) RETURNS text AS ' #!/bin/sh echo "$PLSH_ARG1 $PLSH_ARG2" ' LANGUAGE plsh;
现在再执行SELECT createUserFolder('Hello', 'World');,就能得到预期的Hello World输出啦!
顺便补充个小细节:PL/sh会按参数的位置,把第N个参数存到PLSH_ARG{N}这个环境变量里,和你定义的参数名无关。如果后续需要更多参数,依次用PLSH_ARG3、PLSH_ARG4这类命名就行。
内容的提问来源于stack exchange,提问作者Radislav
相关产品推荐
相关产品推荐

