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

54 lines
2.1 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_insert: создание новой проверки организаций.
-- На основе: новая.
-- Параметры: p_check_date — день (дата) проверки; p_chk_type_id — тип проверки
-- (chk.chk_type.id); p_chk_status_id — статус проверки (chk.chk_status.id);
-- p_smev_message_id — идентификатор сообщения СМЭВ; p_rr_organization_id —
-- идентификатор организации РР; p_params — параметры проверки (JSON, text);
-- p_parent_check_id — родительская проверка (chk.chk_check.id).
-- Возвращает: int — id созданной проверки.
CREATE OR REPLACE FUNCTION chk.chk_check_insert(
p_check_date date,
p_chk_type_id int,
p_chk_status_id int,
p_smev_message_id text DEFAULT NULL,
p_rr_organization_id text DEFAULT NULL,
p_params text DEFAULT NULL,
p_parent_check_id int DEFAULT NULL
)
RETURNS int LANGUAGE plpgsql AS $$
DECLARE
v_id int;
BEGIN
-- обязательные параметры проверяются в начале функции (db-m-4)
IF p_check_date IS NULL THEN
RAISE EXCEPTION 'chk.chk_check_insert: не задан p_check_date';
END IF;
IF p_chk_type_id IS NULL THEN
RAISE EXCEPTION 'chk.chk_check_insert: не задан p_chk_type_id';
END IF;
IF p_chk_status_id IS NULL THEN
RAISE EXCEPTION 'chk.chk_check_insert: не задан p_chk_status_id';
END IF;
INSERT INTO chk.chk_check (
check_date,
chk_type_id,
chk_status_id,
smev_message_id,
rr_organization_id,
params,
parent_check_id
) VALUES (
p_check_date,
p_chk_type_id,
p_chk_status_id,
p_smev_message_id,
p_rr_organization_id,
p_params::jsonb, -- JSON-параметр передаётся как text, каст внутри (db-m-5)
p_parent_check_id
)
RETURNING id INTO v_id;
RETURN v_id;
END;
$$;