在postgresql copy in函数中使用变量时出现列不存在错误
我有这个postgresql函数在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$
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;