PostgreSQL7.0手冊-用戶手冊-10. PL/pgSQL - SQL 過程語言
2019-09-08 23:33:10
供稿:網(wǎng)友
第十章. PL/pgSQL - SQL 過程語言
概述
描述
例子
PL/pgSQL 是 Postgres 數(shù)據(jù)庫系統(tǒng)的一個可裝載的過程語言.
這個包最初是 Jan Wieck 寫的.
概述
PL/pgSQL 的設(shè)計目標(biāo)是創(chuàng)建一種可裝載的過程語言,可以
可用于創(chuàng)建函數(shù)和觸發(fā)器過程,
為 SQL 語言增加控制結(jié)構(gòu),
可以執(zhí)行復(fù)雜的計算,
繼承所有用戶定義類型,函數(shù)和操作符,
可以定義為被服務(wù)器信任(的語言),
容易使用.
PL/pgSQL 函數(shù)第一次被后端調(diào)用時,PL/pgSQL 的調(diào)用控制器分析函數(shù)源文本生成二進制指令樹.所生成的字節(jié)碼在調(diào)用控制器里是用函數(shù)的對象標(biāo)識來標(biāo)記的.這樣就保證如果使用 DROP/CREATE 序列修改了函數(shù),不需要建立一個新的數(shù)據(jù)庫聯(lián)接就能令修改生效.
對于函數(shù)里用到的所有表達式和 SQL 語句,PL/pgSQL 字節(jié)碼解析器使用 SPI 管理器 SPI_prepare() 和 SPI_saveplan() 函數(shù)創(chuàng)建一個準(zhǔn)備好了的執(zhí)行規(guī)劃.這些動作是在(解析器)第一次處理時完成的,獨立的語句是在 PL/pgSQL 函數(shù)里面處理的.因此,一個帶有條件代碼的有許多語句的需要執(zhí)行規(guī)劃的函數(shù),將只準(zhǔn)備和保存那些在整個數(shù)據(jù)庫聯(lián)接周期內(nèi)真正使用到的規(guī)劃.
除了用于用戶定義類型的輸入/輸出轉(zhuǎn)換和計算函數(shù)以外,任何可以在 C 語言函數(shù)里定義的東西都可以在 PL/pgSQL 里使用.我們可以創(chuàng)建復(fù)雜的條件計算函數(shù),并隨后將之用于定義操作符或者用于函數(shù)索引中.
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
描述
PL/pgSQL 的結(jié)構(gòu)
PL/pgSQL 語言是大小寫不敏感的語言.所有關(guān)鍵字和標(biāo)識都可以混合大小寫使用.
PL/pgSQL 是一種面向塊的語言.一個塊象下面這樣定義
[<