2016-12-04 33 views
0

我想一個子查詢的結果傳遞給函數PostgreSQL的子查詢行作爲功能PARAM

說我有一個現有的函數,返回boolean

功能report_can_edit這需要一個report行類型。我想從被傳遞了report

id另一個函數調用這個(只是一個愚蠢的例子來說明什麼,我試圖做)

create or replace function report_can_edit(report report) returns boolean as $$ 
    select true; -- Imagine this does some complicated stuff 
$$ language sql stable; 


create or replace function task_edit(task_report_id int) returns boolean as $$ 
    select report_can_edit((select * from report where id = task_report_id)) 
$$ language sql stable; 

這給
ERROR: subquery must return only one column

我是否必須先切換到plpgsql並首先選擇一個精減的行類型?或者有沒有辦法用sql類型的函數來做到這一點?

回答

1

嘗試:

create or replace function task_edit(task_report_id int) 
returns boolean as $$ 
    select report_can_edit((select report from report where id = task_report_id)) 
$$ language sql stable; 
+0

謝謝!作品一種享受,目前很難通過谷歌找到這些信息。 – Tim