При попытке вернуть таблицу в 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] ОШИБКА: ссылка на столбец "код процесса" неоднозначна
СТРОКА 3: код процесса **

Почему неоднозначно?

0
Anif Maulana 14 Фев 2018 в 09:50

1 ответ

Лучший ответ

processcode используется как параметр функции и как столбец таблицы.

Лучше всего использовать параметры функции с другим именем, например p_processcode.

Но вы также можете устранить неоднозначность, указав имя: log_approval.processcode для столбца и list_log_approval.processcode для параметра функции.

1
Laurenz Albe 14 Фев 2018 в 10:15