PostgreSQL函數(shù)也稱為PostgreSQL存儲(chǔ)過程。 PostgreSQL函數(shù)或存儲(chǔ)過程是存儲(chǔ)在數(shù)據(jù)庫服務(wù)器上并可以使用SQL界面調(diào)用的一組SQL和過程語句(聲明,分配,循環(huán),控制流程等)。 它有助于您執(zhí)行通常在數(shù)據(jù)庫中的單個(gè)函數(shù)中進(jìn)行多次查詢和往返操作的操作。
您可以在許多語言(如SQL,PL/pgSQL,C,Python等)中創(chuàng)建PostgreSQL函數(shù)。
語法:
CREATE [OR REPLACE] FUNCTION function_name (arguments)
RETURNS return_datatype AS $variable_name$
DECLARE
declaration;
[...]
BEGIN
< function_body >
[...]
RETURN { variable_name | value }
END; LANGUAGE plpgsql;
function_name:指定函數(shù)的名稱。[OR REPLACE]:是可選的,它允許您修改/替換現(xiàn)有函數(shù)。RETURN:它指定要從函數(shù)返回的數(shù)據(jù)類型。它可以是基礎(chǔ),復(fù)合或域類型,或者也可以引用表列的類型。function_body:function_body包含可執(zhí)行部分。plpgsql:它指定實(shí)現(xiàn)該函數(shù)的語言的名稱。下面我們來舉個(gè)例子來演示PostgreSQL函數(shù)使用,我們有一個(gè)名為“EMPLOYEES”的表具有以下數(shù)據(jù)。
在EMPLOYEES表上創(chuàng)建一個(gè)名為total records()的函數(shù)。
函數(shù)的定義如下:
CREATE OR REPLACE FUNCTION totalRecords ()
RETURNS integer AS $total$
declare
total integer;
BEGIN
SELECT count(*) into total FROM EMPLOYEES;
RETURN total;
END;
$total$ LANGUAGE plpgsql;
輸出:
您可以看到一個(gè)名為“totalrecords”的函數(shù)被創(chuàng)建?,F(xiàn)在,來執(zhí)行一個(gè)調(diào)用這個(gè)函數(shù)并檢查EMPLOYEES表中的記錄,如下所示 -
select totalRecords();
當(dāng)執(zhí)行上述查詢時(shí),結(jié)果為: