如何引用嵌套和顶级函数之间的参数

时间:2013-11-13 01:00:55

标签: sql postgresql reference nested arguments

我是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

我被困住所以任何指针都会受到赞赏!

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 

在您的情况下,您明确定义了函数参数的名称,因此您应该根据定义使用名称