我有以下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
我需要在函数中更改什么才能让它返回一个值表?我还检查了执行查询,但我需要返回一个结果。
答案 0 :(得分:1)
您必须拥有选择的目的地,并且该功能必须返回一个值。只是一个SELECT语句既不会。通常,这种语句的唯一用途是测试不使用结果的权限或进行触发器运行。您将需要使用RETURN语句系列中的一个来从函数中获取值。
RETURN QUERY( SELECT * from "SIS_campus" );
这会将该查询的结果添加到函数的返回结果中,并且应该执行您正在执行的操作,因为您只能返回0或1个结果。您可能还需要在函数的最后添加一个简单的RETURN(尽管有文档,但是当我需要或者不需要时,我自己也不太了解。)