Столкнулся с простой задачей, создания хранимых процедур, но как обычно пришлось потратить время, чтобы разобраться. Публикую эти примеры процедур, чтобы бы люди могли использовать а не рыть документацию на английском языке.
Функция возвращает значение поля (много строк).
CREATE FUNCTION g_test(integer) RETURNS SETOF text AS $BODY$ DECLARE r text; BEGIN FOR r IN SELECT "spr_user"."NAME_USER" FROM "spr_user" WHERE "spr_user"."IDUSER" > $1 LOOP RETURN NEXT r; END LOOP; RETURN; END $BODY$ LANGUAGE 'plpgsql'
Будет возвращено множество значений. Стоит заметить, что функция имеет входной параметр. Вызвать функцию нужно командой sql:
select g_test(2);
где 2, это входной параметр.
Эта функция вернет только одно значение:
CREATE FUNCTION test_function() RETURNS text AS $$ DECLARE var_id text; BEGIN SELECT "spr_user"."NAME_USER" INTO var_id FROM "spr_user" LIMIT 1; RETURN var_id; END; $$ LANGUAGE 'plpgsql';
Вызвать функцию нужно командой sql:
select test_function();
функция положит значение в переменную var_id и вернет переменную.
Эти функции применимы только для PostgreSQL сервера.