I trying to make function, that merge where select query
return result as value(not table) and insert into
that use value from select statement.
The function where argument gets from user, and this argument provide into select
query on table_foo
that return value id
where I try set and use in insert into
to diff table(table_bar
). So I little bit confused. Here sample of code:
x
create or replace function my_func(taskID integer)
returns integer
language plpgsql
as $function$
declare jobID int;
begin
return query (
select id
from table_foo
where task_id = taskID
); --that must return values such as id that i need
set jobID = id --trying set previosly returned value to new to use it in next statement:
insert into table_bar (job_id)
values (jobID);
end;
$function$
;
Advertisement
Answer
No need for plpgsql and no need for two queries either. Combine the INSERT and SELECT, and use RETURNING.
CREATE OR REPLACE FUNCTION my_func(taskID INTEGER)
RETURNS INTEGER
LANGUAGE SQL
AS
$$
INSERT INTO table_bar(job_id)
SELECT id
FROM table_foo
WHERE task_id = taskID
RETURNING id;
$$;