PL/pgSQL從入門(mén)到放棄(1)-入門(mén)

本文由 @小劉先森 原創(chuàng),轉(zhuǎn)載請(qǐng)注明出處。

plpgsql系列文章,方便小伙伴們學(xué)習(xí)。

PL/pgSQL從入門(mén)到放棄(1)-入門(mén)
PL/pgSQL從入門(mén)到放棄(2)-變量定義與數(shù)據(jù)類型
PL/pgSQL從入門(mén)到放棄(3)-函數(shù)
PL/pgSQL從入門(mén)到放棄(4.1)-函數(shù)返回常用數(shù)據(jù)類型——組合數(shù)據(jù)類型
PL/pgSQL從入門(mén)到放棄(4.2)-函數(shù)返回常用數(shù)據(jù)類型——行數(shù)據(jù)類型
PL/pgSQL從入門(mén)到放棄(4.3)-函數(shù)返回常用數(shù)據(jù)類型——記錄數(shù)據(jù)類型
PL/pgSQL從入門(mén)到放棄(4.4)-函數(shù)返回常用數(shù)據(jù)類型——復(fù)制數(shù)據(jù)類型
PL/pgSQL從入門(mén)到放棄(5)-條件語(yǔ)句與循環(huán)語(yǔ)句
PL/pgSQL從入門(mén)到放棄(6)-游標(biāo)

PL/pgSQL介紹

plpgsql入門(mén),介紹使用它有哪些優(yōu)點(diǎn)以及一個(gè)HelloWorld。

PL/pgSQL是一種用于PostgreSQL數(shù)據(jù)庫(kù)系統(tǒng)的可載入的過(guò)程語(yǔ)言。

  • 可以被用來(lái)創(chuàng)建函數(shù)和觸發(fā)器過(guò)程
  • 對(duì)SQL語(yǔ)言增加控制結(jié)構(gòu)
  • 可以執(zhí)行復(fù)雜計(jì)算
  • 繼承所有用戶定義類型、函數(shù)和操作符
  • 可以被定義為受服務(wù)器信任
  • 便于使用

優(yōu)點(diǎn)

  • 客戶端和服務(wù)器之間的額外往返通信被消除
  • 客戶端不需要的中間結(jié)果不必被整理或者在服務(wù)器和客戶端之間傳送
  • 多輪的查詢解析可以被避免
    與不使用存儲(chǔ)函數(shù)的應(yīng)用相比,這能夠?qū)е驴捎^的性能提升。

PL/pgSQL的HelloWorld

函數(shù)的結(jié)構(gòu):

CREATE FUNCTION somefunc(integer, text) RETURNS integer
AS 'function body text'
LANGUAGE plpgsql;

在開(kāi)發(fā)過(guò)程中不關(guān)心函數(shù)是否存在,可以使用 CREATE OR REPLACE Function來(lái)創(chuàng)建函數(shù)。

PL/pgSQL是一種塊結(jié)構(gòu)的語(yǔ)言。一個(gè)塊被定義為:

[ <<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)建一個(gè)子塊
    --
    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í)行
將以上語(yǔ)句復(fù)制在Navicat或者PgAdmin等數(shù)據(jù)庫(kù)客戶端執(zhí)行,即可創(chuàng)建helloworld函數(shù)。

執(zhí)行函數(shù)-結(jié)果
執(zhí)行函數(shù)-信息輸出

以上看到執(zhí)行helloworld函數(shù)后輸出信息以及結(jié)果,結(jié)果為plpgsql。

以上為本篇的入門(mén)介紹,歡迎各位批評(píng)指正。

關(guān)于作者

大家有需要介紹哪些部分,或者一些想法歡迎聯(lián)系我。

GISer
QQ: 1016817543
郵箱:1016817543@qq.com
github:https://github.com/MrSmallLiu (歡迎star)

相關(guān)鏈接

歡迎各位Star、Issues、PR

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容