Я получаю синтаксическую ошибку при попытке создать эту функцию и не могу понять, что происходит.
Код:
CREATE OR REPLACE FUNCTION avadi_enterprise.create_doctor(_form json)
RETURNS json
LANGUAGE plpgsql
COST 100
VOLATILE
AS $$
BEGIN
RETURN(
SELECT json_agg(results)
FROM(
INSERT INTO avadi_enterprise.doctor(
first_name,
last_name,
phone_number,
email,
office_open,
office_close,
shipping_route_id,
sales_rep_id,
user_login_id,
status)
VALUES
(_form::json ->> 'first_name',
_form::json ->> 'last_name',
_form::json ->> 'phone_number',
_form::json ->> 'email',
CAST(_form::json ->> 'office_open' AS time),
CAST(_form::json ->> 'office_close' AS time),
CAST(_form::json ->> 'shipping_route_id' AS int),
CAST(_form::json ->> 'sales_rep_id' AS int),
CAST(_form::json ->> 'user_login_id' AS int),
_form::json ->> 'status')
RETURNING
*)
AS results)
END;
$$;
Ошибка:
ERROR: syntax error at or near "INTO"
LINE 18: INSERT INTO avadi_enterprise.doctor(
^
SQL state: 42601
Character: 310
Я пытался поставить точку с запятой после RETURNING *
, но затем говорится, что у меня несоответствующая скобка.
Postgresql - версия 12.