Příkazy CALL a RETURN
Příkaz CALL
Tento příkaz slouží k aktivaci libovolné funkce. Na rozdíl od standardu PostgreSQL nepodporuje předávání hodnot odkazem. Tento příkaz je analogický příkazu PERFORM v jazyce PL/pgSQL.
Syntaxe
CALL '(' seznam hodnot oddelenych carkou ')'
Příkaz RETURN
Příkaz RETURN ukončuje provádění funkce. Výsledek výrazu v příkazu je zároveň hodnotou, která je vrácena funkcí. Výraz v příkazu RETURN nemusíme uvádět jestliže se jedná o funkci s OUT argumenty, nebo se jedná o void funkci. PL/pgPSM podporuje tzv. funkce generující tabulky (set returned funkce).
Syntaxe
RETURN [vyraz]
Pokud je funkce vrací tabulku, musíme použít tzv. tabulkový výraz, kdy výraz v příkazu RETURN je SQL příkaz, jehož výsledkem je tabulka. Jelikož se výsledná tabulka přímo předává jako výstup z funkce, používá se příkaz SELECT bez klauzule INTO. Tabulkový výraz se smí objevit pouze jako argument příkazu RETURN.
CREATE OR REPLACE FUNCTION tab(p int) RETURNS SETOF Foo AS $$ BEGIN -- urcity vypocet IF p < 0 THEN SET p = 0; END IF; IF p > 20 THEN SET p = 20; END IF; -- pouziti tabulkoveho vyrazu RETURN TABLE( SELECT * FROM Foo WHERE Foo.a < tab.p; ); END; $$ LANGUAGE plpgpsm;