42 lines
1.6 KiB
PL/PgSQL
42 lines
1.6 KiB
PL/PgSQL
-- 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;
|
||
$$;
|