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塊的任何結果返回給函數)。 –