我已经成功创建了下表和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)
使用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);