有时候,函数名称可能是配置的,需要动态去调用并获得函数结果,可以使用 execute sql into result 动态执行来达到目的。方法示例如下:
函数定义:
CREATE OR REPLACE FUNCTION public.f_square(v_a int)
RETURNS int -- 平方
LANGUAGE 'plpgsql'
AS $BODY$
declare
lv_result int;
begin
lv_result := v_a * v_a;
return lv_result;
end
$BODY$;
动态调用并以得结果:
DO $$
declare
lv_i int;
lv_result int;
begin
lv_i := 90;
execute ' select f_square($1)' using lv_i into lv_result;
raise notice '%', lv_result;
end $$;
输出结果:
注意: 8100
DO
Query returned successfully in 45 msec.