Function (ฟังก์ชัน) เป็นอ็อบเจกต์ในฐานข้อมูลที่ประกอบด้วยชุดคำสั่งหลายคำสั่งจัดกลุ่มไว้ด้วยกัน สร้างขึ้นเพื่อวัตถุประสงค์การนำกลับมาใช้ใหม่ ใน SQL Server ฟังก์ชันถูกเก็บไว้ และคุณสามารถส่งพารามิเตอร์เข้าไป รวมถึงคืนค่า
บทความนี้จะให้ไวยากรณ์และตัวอย่างวิธีสร้างและลบฟังก์ชันใน SQL Server
CREATE FUNCTION (สร้างฟังก์ชัน)
ไวยากรณ์
การสร้างฟังก์ชันใน SQL Server ใช้ไวยากรณ์ดังนี้:
CREATE FUNCTION [schema_name.] Function_name
([@parameter [AS] [type_schema_name.] datatype
[= default] [READONLY]
, @parameter [AS] [type_schema_name.] datatype
[= default] [READONLY]]
)
RETURNS return_datatype
[WITH {ENCRYPTION
| SCHEMABINDING
| RETURNS NULL ON NULL INPUT
| CALLED ON NULL INPUT
| EXECUTE AS Clause}]
[AS]
BEGIN
[declaration_section]
executable_section
RETURN return_value
END;
พารามิเตอร์:
- schema_name: ชื่อสคีม่า (schema) ที่เป็นเจ้าของฟังก์ชัน
- function_name: ชื่อที่กำหนดให้ฟังก์ชัน
- @parameter: พารามิเตอร์หนึ่งหรือหลายตัวที่ส่งเข้าไปในฟังก์ชัน
- type_schema_name: ชนิดข้อมูลของสคีม่า (หากมี)
- datatype: ชนิดข้อมูลสำหรับ @parameter
- default: ค่าเริ่มต้นที่กำหนดให้ @parameter
- READONLY: @parameter ไม่สามารถเขียนทับโดยฟังก์ชันได้
- return_datatype: ชนิดข้อมูลของค่าที่คืน
- ENCRYPTION: รหัสต้นทางของฟังก์ชันจะไม่ถูกเก็บเป็นข้อความในระบบ
- SCHEMABINDING: รับรองว่าอ็อบเจกต์ที่ไม่ได้แก้ไขจะไม่ส่งผลต่อฟังก์ชัน
- RETURNS NULL ON NULL INPUT: ฟังก์ชันจะคืนค่า NULL หากพารามิเตอร์ใดเป็น NULL
- CALLED ON NULL INPUT: ฟังก์ชันจะดำเนินการแม้พารามิเตอร์จะเป็น NULL
- EXECUTE AS clause: ระบุบริบทความปลอดภัยในการดำเนินการฟังก์ชัน
- return_value: ค่าที่คืน
ตัวอย่าง
CREATE FUNCTION fuNhanvien
(@nhanvien_id INT)
RETURNS VARCHAR (50)
AS
BEGIN
DECLARE @nhanvien_name VARCHAR (50);
IF @nhanvien_id < 10
SET @nhanvien_name = 'Smith';
ELSE
SET @nhanvien_name = 'Lawrence';
RETURN @nhanvien_name;
END;
ฟังก์ชันด้านบนชื่อ fuNhanvien มีพารามิเตอร์ @nhanvien_id ชนิด INT ฟังก์ชันจะคืนค่า VARCHAR(50) เมื่อรันคำสั่ง RETURNS
จากนั้นคุณสามารถอ้างอิง fuNhanvien ได้ดังนี้:
USE [test]
GO
SELECT dbo.fuNhanvien(8);
GO
DROP FUNCTION (ลบฟังก์ชัน)
หลังจากสร้างฟังก์ชันสำเร็จแล้ว จะมีกรณีที่ต้องการลบฟังก์ชันออกจากฐานข้อมูลด้วยเหตุผลบางอย่าง
ไวยากรณ์
การลบฟังก์ชันมีไวยากรณ์ดังนี้:
DROP FUNCTION function_name;
พารามิเตอร์:
function_name: ชื่อฟังก์ชันที่ต้องการลบ
ตัวอย่าง
DROP FUNCTION fuNhanvien;
การรันคำสั่งนี้จะลบฟังก์ชัน fuNhanvien ออกจากฐานข้อมูล