程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> PostgreSQL >> PostgreSQL函數

PostgreSQL函數

編輯: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;

Where,

  • function-name specifies the name of the function.

  • [OR REPLACE] option allows modifying an existing function.

  • The function must contain a return statement.

  • RETURN clause specifies that data type you are going to return from the function. Thereturn_datatype can be a base, composite, or domain type, or can reference the type of a table column.

  • function-body contains the executable part.

  • The AS keyword is used for creating a standalone function.

  • plpgsql is the name of the language that the function is implemented in. Here we use this option for PostgreSQL, it Can be SQL, C, internal, or the name of a user-defined procedural language. For backward compatibility, the name can be enclosed by single quotes.

語法

The following example illustrates creating and calling a standalone function. This function returns the total number of records in the COMPANY table. We will use the COMPANY table, which has following records:

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)

Function totalRecords() is as follows:

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;

When the above query is executed the result would be:

testdb# CREATE FUNCTION

Now let's execute a call to this function and check the records in the COMPANY table

testdb=# select totalRecords();

When the above query is executed the result would be:

 totalrecords
--------------
            7
(1 row)


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved