2014-09-12 50 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(儘管有文檔,但我自己並不需要這些文檔)。