0

在 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';

我查看了 SQL 函数的参数,发现您可以使用语法引用参数$n。所以我在嵌套函数中替换了 (x, y) ,($1, $2)但是在调用 f2 时它会给出错误消息ERROR: there is no parameter $1 SQL state: 42P02 Context: SQL function "f2" statement 1

4

1 回答 1

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 

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

于 2013-11-13T01:15:56.500 回答