MT.Checks/DB/chk/functions/chk_check_select.sql

42 lines
1.6 KiB
PL/PgSQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- chk.chk_check_select: выборка проверок с необязательными фильтрами.
-- На основе: новая.
-- Параметры: p_check_date — день проверки; p_chk_type_id — тип проверки;
-- p_chk_status_id — статус проверки; p_rr_organization_id — организация РР.
-- NULL параметра = фильтр не применяется.
-- Возвращает: TABLE — строки chk_check.
CREATE OR REPLACE FUNCTION chk.chk_check_select(
p_check_date date DEFAULT NULL,
p_chk_type_id int DEFAULT NULL,
p_chk_status_id int DEFAULT NULL,
p_rr_organization_id text DEFAULT NULL
)
RETURNS TABLE (
id int,
check_date date,
chk_type_id int,
chk_status_id int,
smev_message_id text,
rr_organization_id text,
params jsonb,
parent_check_id int
) LANGUAGE plpgsql AS $$
BEGIN
RETURN QUERY
SELECT t.id,
t.check_date,
t.chk_type_id,
t.chk_status_id,
t.smev_message_id,
t.rr_organization_id,
t.params,
t.parent_check_id
FROM chk.chk_check t
WHERE (p_check_date IS NULL OR t.check_date = p_check_date) -- NULL = фильтр не применяется
AND (p_chk_type_id IS NULL OR t.chk_type_id = p_chk_type_id)
AND (p_chk_status_id IS NULL OR t.chk_status_id = p_chk_status_id)
AND (p_rr_organization_id IS NULL
OR t.rr_organization_id = p_rr_organization_id)
ORDER BY t.id;
END;
$$;