我試圖創建函式,將select query結果作為值(而不是表)回傳并insert into使用select 陳述句中的值進行合并。
引數從用戶那里獲取的函式,這個引數提供給我嘗試設定并使用到 diff table( )的回傳值select的查詢。所以我有點困惑。這里的代碼示例:table_fooidinsert intotable_bar
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$
;
uj5u.com熱心網友回復:
不需要 plpgsql 也不需要兩個查詢。結合 INSERT 和 SELECT,并使用 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;
$$;
uj5u.com熱心網友回復:
不確定,但你可以試試
create or replace function my_func(taskID integer)
returns integer
language plpgsql
as $function$
declare jobID int;
begin
select id into jobID
from table_foo
where task_id = taskID;
insert into table_bar (job_id) values (jobID);
end;
$function$
;
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/424865.html
標籤:sql PostgreSQL 功能
下一篇:我如何用串列呼叫特定函式
