Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Function PostgreSQL函数返回类型记录显示错误_Function_Record_Postgresql 9.1 - Fatal编程技术网

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

Function PostgreSQL函数返回类型记录显示错误,function,record,postgresql-9.1,Function,Record,Postgresql 9.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_selec

我已成功创建了下表和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表,这样在使用函数时就不需要指定列名。您不需要PL/pgSQL,如果您只想包装一个查询,那么语言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;
无论定义为returns setof还是with returns table,设置返回函数都需要在FROM子句中使用,因此您需要如下使用它:

挑选* 从测试中选择101;
Postgres 9.1是您应该尽快计划升级。谢谢。假设我使用setof记录作为返回类型,我必须在我的函数中使用out参数,对吗?