2014-09-12 54 views
0

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

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

您必须有一个选择的目标,并且函数必须返回一个值。只是一个SELECT语句既不。通常,这种声明的唯一用途是测试权限,或者使触发器运行,而不使用结果。您将需要使用RETURN语句族中的一个来获取函数中的值。

RETURN QUERY(SELECT * from "SIS_campus"); 

这将是查询的结果添加到函数的返回结果,也应该做到你以后,因为你只能返回0或1的结果。您可能还需要在函数的最后添加一个简单的RETURN(尽管有文档,但我自己并不需要这些文档)。