-- 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; $$;