PostgreSQL函数返回类型记录显示错误

问题描述 投票:0回答:1

我已经成功创建了下表和function.function,但是当我调用功能,它显示错误。

create table emp_details(empno int,ename varchar(20),sal numeric(7,2))

insert into emp_details values(101,'John',4500)
insert into emp_details values(101,'david',5000)

CREATE OR REPLACE FUNCTION test_select(IN eno integer)
RETURNS SETOF RECORD AS                                                                                   
$body$
BEGIN
        RETURN QUERY                                                       
        SELECT ename,sal FROM EMP_DETAILS WHERE EMPNO=eno;
END;
$body$
LANGUAGE plpgsql 

函数创建成功。但是在调用函数时,它显示错误。如何在记录类型中实现?

select test_select(101)
function record postgresql-9.1
1个回答
0
投票

使用returns table代替,那样您在使用函数时就无需指定列名。而且您不需要PL / pgSQL,如果您只想包装查询,language sql函数的效率会更高。

CREATE OR REPLACE FUNCTION test_select(IN eno integer)
  RETURNS TABLE (ename text, sal numeric)
AS                                                                                   
$body$
  SELECT ename,sal 
  FROM emp_details
  WHERE EMPNO=eno;
END;
$body$
LANGUAGE sql;

需要在FROM子句中使用返回函数(无论是定义为returns setof还是使用returns table进行设置,所以您需要这样使用它:

select *
from test_select(101);
© www.soinside.com 2019 - 2024. All rights reserved.