I'm creating a function to insert new data if the data not found. Currently I am unable to return the ID after inserting the data. I get an empty result: return empty id after insert
Here's the query:
CREATE OR REPLACE FUNCTION save_data_if_not_found(
input_data1 character varying,
input_data2 character varying,
input_data3 integer)
RETURNS SETOF integer
LANGUAGE 'plpgsql'
COST 100
VOLATILE
ROWS 1000
AS $BODY$
DECLARE save_id integer;
BEGIN
RETURN QUERY
SELECT id FROM save_data_if_not_found
WHERE data2 = input_data2 AND data3 = input_data3;
IF NOT FOUND THEN
RAISE INFO 'No id found. Create new';
INSERT INTO save_data_if_not_found (data1,data2,data3)
VALUES (input_data1,input_data2,input_data3)
RETURNING id INTO save_id;
ELSE
RAISE INFO 'Id found.';
END IF;
END;
$BODY$;
SELECT * FROM save_data_if_not_found ('john','doe',1);