本文由 @小劉先森 原創(chuàng),轉(zhuǎn)載請注明出處怎囚。
plpgsql系列文章,方便小伙伴們學(xué)習(xí)。
PL/pgSQL從入門到放棄(1)-入門
PL/pgSQL從入門到放棄(2)-變量定義與數(shù)據(jù)類型
PL/pgSQL從入門到放棄(3)-函數(shù)
PL/pgSQL從入門到放棄(4.1)-函數(shù)返回常用數(shù)據(jù)類型——組合數(shù)據(jù)類型
PL/pgSQL從入門到放棄(4.2)-函數(shù)返回常用數(shù)據(jù)類型——行數(shù)據(jù)類型
PL/pgSQL從入門到放棄(4.3)-函數(shù)返回常用數(shù)據(jù)類型——記錄數(shù)據(jù)類型
PL/pgSQL從入門到放棄(4.4)-函數(shù)返回常用數(shù)據(jù)類型——復(fù)制數(shù)據(jù)類型
PL/pgSQL從入門到放棄(5)-條件語句與循環(huán)語句
PL/pgSQL從入門到放棄(6)-游標
PL/pgSQL介紹
plpgsql入門灾梦,介紹使用它有哪些優(yōu)點以及一個HelloWorld。
PL/pgSQL是一種用于PostgreSQL數(shù)據(jù)庫系統(tǒng)的可載入的過程語言妓笙。
- 可以被用來創(chuàng)建函數(shù)和觸發(fā)器過程
- 對SQL語言增加控制結(jié)構(gòu)
- 可以執(zhí)行復(fù)雜計算
- 繼承所有用戶定義類型若河、函數(shù)和操作符
- 可以被定義為受服務(wù)器信任
- 便于使用
優(yōu)點
- 客戶端和服務(wù)器之間的額外往返通信被消除
- 客戶端不需要的中間結(jié)果不必被整理或者在服務(wù)器和客戶端之間傳送
- 多輪的查詢解析可以被避免
與不使用存儲函數(shù)的應(yīng)用相比,這能夠?qū)е驴捎^的性能提升寞宫。
PL/pgSQL的HelloWorld
函數(shù)的結(jié)構(gòu):
CREATE FUNCTION somefunc(integer, text) RETURNS integer
AS 'function body text'
LANGUAGE plpgsql;
在開發(fā)過程中不關(guān)心函數(shù)是否存在萧福,可以使用
CREATE OR REPLACE Function
來創(chuàng)建函數(shù)。
PL/pgSQL是一種塊結(jié)構(gòu)的語言辈赋。一個塊被定義為:
[ <<label>> ]
[ DECLARE
declarations
BEGIN
statements
END [ label ];
真正的HelloWorld
CREATE FUNCTION helloworld() RETURNS varchar AS $$
<< outerblock >>
DECLARE
name varchar := 'unknown';
BEGIN
RAISE NOTICE 'My Name is %', name ; -- Prints (My Name is unknown)
name := 'plpgsql';
--
-- 創(chuàng)建一個子塊
--
DECLARE
name varchar := 'interblock';
BEGIN
RAISE NOTICE 'My Name is %', name; -- Prints (My Name is interblock)
RAISE NOTICE 'My Name is %', outerblock.name; -- Prints (My Name is unknown)
END;
RAISE NOTICE 'My Name is %', name; -- Prints (My Name is plpgsql)
RETURN name;
END;
$$ LANGUAGE plpgsql;
執(zhí)行
將以上語句復(fù)制在Navicat或者PgAdmin等數(shù)據(jù)庫客戶端執(zhí)行鲫忍,即可創(chuàng)建helloworld
函數(shù)。
以上看到執(zhí)行helloworld函數(shù)后輸出信息以及結(jié)果钥屈,結(jié)果為plpgsql悟民。
以上為本篇的入門介紹,歡迎各位批評指正焕蹄。
關(guān)于作者
大家有需要介紹哪些部分逾雄,或者一些想法歡迎聯(lián)系我。
GISer
QQ: 1016817543
郵箱:1016817543@qq.com
github:https://github.com/MrSmallLiu (歡迎star)
相關(guān)鏈接
歡迎各位Star、Issues鸦泳、PR