天天看點

PL/pgSQL之入門

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函數。

PL/pgSQL之入門
PL/pgSQL之入門

以上看到執行helloworld函數後輸出資訊以及結果,結果為plpgsql。

以上為本篇的入門介紹,歡迎各位批評指正。

關于作者

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

GISer

QQ: 1016817543

郵箱:[email protected]

github:https://github.com/MrSmallLiu (歡迎star)

劉航,國信司南(北京)地理資訊技術有限公司,技術經理。負責過多個基于 PostgreSQL 資料庫以及 PostGIS 的大中型項目。公司矢量切片産品(基于 PostgreSQL 資料庫)研發核心人員。

PL/pgSQL之入門

繼續閱讀