【问题标题】:Return table in function postgres在函数 postgres 中返回表
【发布时间】:2018-02-14 06:50:45
【问题描述】:

当试图在 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] 错误:列引用“processcode”不明确
第 3 行:流程代码**

为什么会模棱两可?

【问题讨论】:

    标签: postgresql function stored-procedures


    【解决方案1】:

    processcode既用作函数参数又用作表列。

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

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

    【讨论】:

      猜你喜欢
      • 2019-11-13
      • 2016-03-20
      • 2013-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-06
      • 1970-01-01
      相关资源
      最近更新 更多