在postgresql copy in函数中使用变量时出现列不存在错误

在postgresql copy in函数中使用变量时出现列不存在错误,postgresql,stored-procedures,plpgsql,Postgresql,Stored Procedures,Plpgsql,我有这个postgresql函数 CREATE OR REPLACE FUNCTION sp_select_test(_id bigint) RETURNS void AS $BODY$ BEGIN copy (select sub.id from ( SELECT id FROM sim s where id = _id) sub) TO '/tmp/results.tsv'; END; $BODY$

我有这个postgresql函数

CREATE OR REPLACE FUNCTION sp_select_test(_id bigint)
  RETURNS void AS
$BODY$                

BEGIN
        copy (select sub.id
        from (
          SELECT id FROM sim s where id = _id) sub) TO '/tmp/results.tsv';
END;

$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION sp_select_test(bigint)
OWNER TO postgres;
当我跑的时候

select * from sp_select_test(264);
我收到错误-列“\u id”不存在

如果我用一个值(比如264)替换函数中的变量_id,那么函数可以工作。也就是说,如果我使用id=264而不是id=\u id


函数失败的原因是什么?

尝试使用$1而不是_idGet“没有参数$1”消息啊,我现在明白了:)改用动态查询
CREATE OR REPLACE FUNCTION sp_select_test(_id bigint)
  RETURNS void AS
$BODY$                

BEGIN
        execute $$copy (select sub.id
        from (
          SELECT id FROM sim s where id = $$||_id||$$) sub) TO '/tmp/results.tsv'$$;
END;

$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION sp_select_test(bigint)
OWNER TO postgres;