2016-12-04 36 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