PostgreSQL - 函式



PostgreSQL **函式**,也稱為儲存過程,允許您在一個數據庫中的單個函式中執行通常需要多個查詢和往返操作的操作。函式允許資料庫重用,因為其他應用程式可以直接與您的儲存過程互動,而不是中間層或複製程式碼。

函式可以用您選擇的語言建立,例如 SQL、PL/pgSQL、C、Python 等。

語法

建立函式的基本語法如下:

CREATE [OR REPLACE] FUNCTION function_name (arguments) 
RETURNS return_datatype AS $variable_name$
   DECLARE
      declaration;
      [...]
   BEGIN
      < function_body >
      [...]
      RETURN { variable_name | value }
   END; LANGUAGE plpgsql;

其中,

  • **function-name** 指定函式的名稱。

  • [OR REPLACE] 選項允許修改現有函式。

  • 函式必須包含一個**return**語句。

  • **RETURN** 子句指定您將從函式返回的資料型別。**return_datatype** 可以是基本型別、複合型別或域型別,也可以引用表列的型別。

  • **function-body** 包含可執行部分。

  • AS 關鍵字用於建立獨立函式。

  • **plpgsql** 是函式實現的語言的名稱。在這裡,我們為 PostgreSQL 使用此選項,它可以是 SQL、C、內部或使用者定義的過程語言的名稱。為了向後相容,名稱可以用單引號括起來。

示例

以下示例說明了如何建立和呼叫獨立函式。此函式返回 COMPANY 表中記錄的總數。我們將使用COMPANY表,該表具有以下記錄:

testdb# select * from COMPANY;
 id | name  | age | address   | salary
----+-------+-----+-----------+--------
  1 | Paul  |  32 | California|  20000
  2 | Allen |  25 | Texas     |  15000
  3 | Teddy |  23 | Norway    |  20000
  4 | Mark  |  25 | Rich-Mond |  65000
  5 | David |  27 | Texas     |  85000
  6 | Kim   |  22 | South-Hall|  45000
  7 | James |  24 | Houston   |  10000
(7 rows)

函式 totalRecords() 如下所示:

CREATE OR REPLACE FUNCTION totalRecords ()
RETURNS integer AS $total$
declare
	total integer;
BEGIN
   SELECT count(*) into total FROM COMPANY;
   RETURN total;
END;
$total$ LANGUAGE plpgsql;

執行上述查詢後,結果將為:

testdb# CREATE FUNCTION

現在,讓我們執行對該函式的呼叫並檢查 COMPANY 表中的記錄

testdb=# select totalRecords();

執行上述查詢後,結果將為:

 totalrecords
--------------
      7
(1 row)
廣告

© . All rights reserved.