有一个功能的例子我试图创建:
CREATE OR REPLACE FUNCTION exchange_to_csv()
RETURNS integer AS $$
DECLARE
xseq integer;
BEGIN
SELECT max(events_stage.seq) FROM events_stage INTO xseq;
IF xseq is not NULL THEN
EXECUTE 'COPY (SELECT * from events_stage WHERE events_stage.seq <= $1) TO ''/tmp/test.csv'' WITH CSV' USING xseq;
DELETE FROM event_stage WHERE event_stage.seq <= xseq;
END IF;
RETURN xseq;
END;
$$ LANGUAGE plpgsql;
执行此代码我收到以下错误:
[42P02] ERROR: there is no parameter $1
据我所知,子查询中不存在$ 1。有没有办法,我怎么能把这个参数传给那里?
答案 0 :(得分:0)
$1
是函数中的第一个参数。您的函数exchange_to_csv()
没有参数,因此无法识别$1
。
如果要传递参数,则需要将功能更改为:
exchange_to_csv(x Type)
类型可以是Integer
,Text
等...
然后,您可以在功能正文中按名称x
或x
$1