0
我最近读了DO block。sql和plpgsql函数之间的复杂性和运行时间
已知SQL函数比plpgsql函数运行得更快。所以如果一个操作可以在SQL中完成,我们宁愿用SQL来完成。
现在情况如何?
create or replace function asql()
returns void as $$
begin
raise notice ''hello, world!';
end;
$$ language plpgsql;
AND:
CREATE OR REPLACE FUNCTION aplpgsql()
RETURNS void AS
$BODY$
DO language plpgsql $$
BEGIN
RAISE NOTICE 'hello, world!';
END
$$;
$BODY$
LANGUAGE sql
如果我有比只是普通打印等更复杂的查询是什么? DO块允许任何情况下总是使用SQL函数,取所有的LOOPs
和IFs
并将它们放在DO块中。
我错过了什么?
在SQL函数内部封装一个PL/pgSQL块仍然会生成实际执行的代码PL/pgSQL。在第二种方法中,我看不出任何优势(另外,您无法将嵌入式PL/pgSQL块的任何结果返回给函数)。 –