У меня есть эта функция PL / pgSQL.
CREATE OR REPLACE FUNCTION add_employee_att(emp_id INT, att_time TIMESTAMP)
RETURNS void AS $$
BEGIN
IF NOT EXISTS (SELECT FROM employee_att WHERE employee_id = emp_id AND time_stamp = att_time) THEN
PREPARE prep_att (INT, TIMESTAMP)
AS INSERT INTO employee_att (employee_id, time_stamp) VALUES ($1, $2);
EXECUTE prep_att (emp_id, att_time);
END IF;
END;
$$ LANGUAGE plpgsql;
Тогда, если я выполню это:
SELECT add_employee_att(35, '2019-08-29 00:00:25'::timestamp);
Я получил эту ошибку:
Error in query: ERROR: function prep_att(integer, timestamp without time zone) does not exist
LINE 1: SELECT prep_att(emp_id, att_time)
HINT: No function matches the given name and argument types. You might need to add explicit type casts.
QUERY: SELECT prep_att(emp_id, att_time)
CONTEXT: PL/pgSQL function add_employee_attendant(integer,timestamp without time zone) line 6 at EXECUTE
НоЕсли заменить ПОДГОТОВИТЬ с этой вставкой:
INSERT INTO employee_att (employee_id, time_stamp) VALUES (emp_id, att_time);
Работает нормально. Есть идеи, что не так с подготовкой?