54 lines
2.1 KiB
PL/PgSQL
54 lines
2.1 KiB
PL/PgSQL
-- 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;
|
||
$$;
|