2014-09-12 6 views
0

У меня есть следующая функция postgresql, в которой я пытаюсь вернуть 2 параметра с именем campusid и campusname.Функция Postgresql, не возвращающая таблицу при выборе

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 в самом конце функции (также, несмотря на документы, я не очень разбираюсь, когда это или не нужно, я сам).

Смежные вопросы