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