PostgreSQL - ฟังก์ชั่น
PostgreSQL functionsหรือที่เรียกว่า Stored Procedures ช่วยให้คุณสามารถดำเนินการที่โดยปกติจะใช้เวลาหลายแบบสอบถามและไปกลับในฟังก์ชันเดียวภายในฐานข้อมูล ฟังก์ชันช่วยให้สามารถใช้ฐานข้อมูลซ้ำได้เนื่องจากแอปพลิเคชันอื่นสามารถโต้ตอบโดยตรงกับโพรซีเดอร์ที่จัดเก็บไว้ของคุณแทนที่จะใช้รหัสระดับกลางหรือรหัสซ้ำ
สามารถสร้างฟังก์ชันในภาษาที่คุณเลือกเช่น 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 ระบุชื่อของฟังก์ชัน
ตัวเลือก [หรือแทนที่] อนุญาตให้แก้ไขฟังก์ชันที่มีอยู่
ฟังก์ชันต้องมีไฟล์ return คำให้การ.
RETURNอนุประโยคระบุชนิดข้อมูลที่คุณจะส่งคืนจากฟังก์ชัน return_datatype สามารถเป็นประเภทฐานคอมโพสิตหรือโดเมนหรือสามารถอ้างอิงประเภทของคอลัมน์ตาราง
function-body มีส่วนปฏิบัติการ
คีย์เวิร์ด AS ใช้สำหรับสร้างฟังก์ชันแบบสแตนด์อโลน
plpgsqlคือชื่อของภาษาที่ใช้ฟังก์ชันนี้ในที่นี้เราใช้ตัวเลือกนี้สำหรับ PostgreSQL ซึ่งอาจเป็น SQL, C, internal หรือชื่อของภาษาขั้นตอนที่ผู้ใช้กำหนดเอง สำหรับความเข้ากันได้แบบย้อนหลังชื่อสามารถถูกใส่ไว้ด้วยเครื่องหมายคำพูดเดี่ยว
ตัวอย่าง
ตัวอย่างต่อไปนี้แสดงให้เห็นถึงการสร้างและเรียกใช้ฟังก์ชันแบบสแตนด์อโลน ฟังก์ชันนี้ส่งคืนจำนวนระเบียนทั้งหมดในตาราง 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)