plpgsql入門,介紹使用它有哪些優點以及一個HelloWorld。
PL/pgSQL介紹
PL/pgSQL是一種用于PostgreSQL資料庫系統的可載入的過程語言。
- 可以被用來建立函數和觸發器過程
- 對SQL語言增加控制結構
- 可以執行複雜計算
- 繼承所有使用者定義類型、函數和操作符
- 可以被定義為受伺服器信任
- 便于使用
優點
- 用戶端和伺服器之間的額外往返通信被消除
- 用戶端不需要的中間結果不必被整理或者在伺服器和用戶端之間傳送
- 多輪的查詢解析可以被避
- 與不使用存儲函數的應用相比,這能夠導緻可觀的性能提升。
PL/pgSQL 的 HelloWorld
函數的結構:
CREATE FUNCTION somefunc(integer, text) RETURNS integer
AS 'function body text'
LANGUAGE plpgsql;
在開發過程中不關心函數是否存在,可以使用 CREATE OR REPLACE Function來建立函數。
PL/pgSQL是一種塊結構的語言。一個塊被定義為:
[ <<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';
--
-- 建立一個子塊
--
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;
執行
将以上語句複制在Navicat或者PgAdmin等資料庫用戶端執行,即可建立helloworld函數。
以上看到執行helloworld函數後輸出資訊以及結果,結果為plpgsql。
以上為本篇的入門介紹,歡迎各位批評指正。
關于作者
大家有需要介紹哪些部分,或者一些想法歡迎聯系我。
GISer
QQ: 1016817543
github:https://github.com/MrSmallLiu (歡迎star)
劉航,國信司南(北京)地理資訊技術有限公司,技術經理。負責過多個基于 PostgreSQL 資料庫以及 PostGIS 的大中型項目。公司矢量切片産品(基于 PostgreSQL 資料庫)研發核心人員。