我是sql和postgresql的新手。
在postgres 9.3(MacOSX)上使用sql,如何将嵌套函数中的参数引用到顶级函数的参数?下面是一个虚拟的例子。
CREATE FUNCTION f1(x TEXT, y TEXT) RETURNS SETOF some_tbl AS $$
SELECT col1, col2, col3
FROM some_other_tbl
WHERE col1=x AND col2=y
GROUP BY col1;
$$ LANGUAGE 'sql';
CREATE FUNCTION f2(x TEXT, y TEXT) RETURNS void AS $$
COPY (SELECT * FROM f1(x, y) TO 'myfilepath/test.csv'
$$ LANGUAGE 'sql';
我查看了Arguments for SQL Functions,发现您可以使用语法$n
引用参数。所以我用($1, $2)
替换了嵌套函数中的(x,y)但是在调用f2时它给出了错误消息ERROR: there is no parameter $1
SQL state: 42P02
Context: SQL function "f2" statement 1
我被困住所以任何指针都会受到赞赏!
答案 0 :(得分:1)
($ 1,$ 2)表示法将起作用,如下例所示:
CREATE FUNCTION add_em(integer, integer) RETURNS integer AS $$
SELECT $1 + $2;
$$ LANGUAGE SQL;
SELECT add_em(1, 2) AS answer;
answer
--------
3
在您的情况下,您明确定义了函数参数的名称,因此您应该根据定义使用名称