函数postgres返回表

时间:2018-02-14 06:50:46

标签: postgresql function stored-procedures

当试图在postgres中返回表时,这是我的查询:

CREATE OR REPLACE FUNCTION list_log_approval(IN p_create_code INTEGER,IN p_update_code INTEGER) RETURNS
TABLE(processcode integer, processname VARCHAR,id BIGINT, pleader CHARACTER VARYING,activity VARCHAR,date_plead timestamp)
LANGUAGE plpgsql AS $$ 
BEGIN
        IF NOT EXISTS( SELECT * FROM log_approval WHERE processcode = $1 and status = 'A' or status = 'D')AND NOT EXISTS(SELECT * FROM log_approval WHERE processcode = $2 and status = 'A' or status = 'D') THEN
                RETURN QUERY SELECT * from vw_list_appv;
        END IF;
    RETURN;
END $$;

- 我这样称呼

select * from list_log_approval(1070,1072)

我收到以下错误:

  

[Err] ERROR:列引用“processcode”不明确
  第3行:processcode **

为什么它含糊不清?

1 个答案:

答案 0 :(得分:1)

processcode用作函数参数和表列。

最好的方法是使用具有不同名称的函数参数,例如p_processcode

但您也可以通过限定名称来消除歧义:列{}为log_approval.processcode,函数参数为list_log_approval.processcode