Postgresql函数没有在select上返回一个表

时间:2014-09-12 18:46:12

标签: sql postgresql

我有以下postgresql函数,其中我试图返回名为campusid和campusname的2个参数。

CREATE OR REPLACE FUNCTION getall(IN a character varying, IN b character varying)
  RETURNS TABLE(id character varying, name character varying) AS
$BODY$
BEGIN
if $1 = 'PK' then
     SELECT * from table1;

end if;
END
$BODY$
LANGUAGE plpgsql;

但我收到以下错误:

ERROR:  query has no destination for result data
HINT:  If you want to discard the results of a SELECT, use PERFORM instead.
CONTEXT:  PL/pgSQL function "getallcampuses" line 27 at SQL statement

********** Error **********

ERROR: query has no destination for result data
SQL state: 42601
Hint: If you want to discard the results of a SELECT, use PERFORM instead.
Context: PL/pgSQL function "getallcampuses" line 27 at SQL statement

我需要在函数中更改什么才能让它返回一个值表?我还检查了执行查询,但我需要返回一个结果。

1 个答案:

答案 0 :(得分:1)

您必须拥有选择的目的地,并且该功能必须返回一个值。只是一个SELECT语句既不会。通常,这种语句的唯一用途是测试不使用结果的权限或进行触发器运行。您将需要使用RETURN语句系列中的一个来从函数中获取值。

RETURN QUERY( SELECT * from "SIS_campus" );

这会将该查询的结果添加到函数的返回结果中,并且应该执行您正在执行的操作,因为您只能返回0或1个结果。您可能还需要在函数的最后添加一个简单的RETURN(尽管有文档,但是当我需要或者不需要时,我自己也不太了解。)