Bài 10: Sử dụng Stored Procedure và Function
Stored Procedure và Function là hai công cụ mạnh mẽ trong SQL, cho phép bạn đóng gói các logic nghiệp vụ phức tạp vào các đơn vị có thể tái sử dụng. Việc sử dụng chúng đúng cách không chỉ giúp tăng cường khả năng bảo trì và tái sử dụng mã nguồn mà còn có thể cải thiện hiệu suất của hệ thống. Bài viết này sẽ đi sâu vào khái niệm, cách sử dụng, và so sánh giữa Stored Procedure và Function, đồng thời đưa ra các ví dụ cụ thể để minh họa.
10.1. Stored Procedure là gì?
Stored Procedure là một tập hợp các câu lệnh SQL được lưu trữ trong cơ sở dữ liệu và có thể được gọi lại nhiều lần. Nó thường được sử dụng để thực hiện các tác vụ phức tạp hoặc lặp đi lặp lại.
10.1.1. Ưu điểm của Stored Procedure
Tăng hiệu suất: Stored Procedure được biên dịch và lưu trữ trong database, giúp giảm thời gian thực thi so với việc gửi các câu lệnh SQL riêng lẻ từ ứng dụng.
Bảo mật: Stored Procedure cho phép kiểm soát quyền truy cập vào dữ liệu thông qua việc cấp quyền thực thi procedure thay vì cấp quyền trực tiếp trên bảng.
Tái sử dụng: Stored Procedure có thể được gọi lại nhiều lần từ các ứng dụng khác nhau, giúp giảm sự trùng lặp mã nguồn.
10.1.2. Cách tạo và sử dụng Stored Procedure
Cú pháp tạo Stored Procedure:
CREATE PROCEDURE procedure_name AS BEGIN -- Các câu lệnh SQL END;
Ví dụ:
CREATE PROCEDURE GetEmployeeByDepartment @DepartmentID INT AS BEGIN SELECT employee_id, first_name, last_name FROM employees WHERE department_id = @DepartmentID; END;
Cách gọi Stored Procedure:
EXEC GetEmployeeByDepartment @DepartmentID = 1;
10.2. Function là gì?
Function là một đơn vị mã có thể trả về một giá trị hoặc một bảng. Khác với Stored Procedure, Function có thể được sử dụng trong các câu lệnh SQL như một biểu thức.
10.2.1. Phân biệt Function và Stored Procedure
Function:
Có thể trả về một giá trị hoặc một bảng.
Có thể được sử dụng trong các câu lệnh SQL như
SELECT
,WHERE
,HAVING
.Không thể thực hiện các thao tác thay đổi dữ liệu (INSERT, UPDATE, DELETE).
Stored Procedure:
Có thể thực hiện các thao tác thay đổi dữ liệu.
Không thể sử dụng trực tiếp trong các câu lệnh SQL như
SELECT
.
10.2.2. Cách sử dụng Function
Cú pháp tạo Function:
CREATE FUNCTION function_name (@parameter1 datatype, @parameter2 datatype) RETURNS return_datatype AS BEGIN -- Các câu lệnh SQL RETURN return_value; END;
Ví dụ:
CREATE FUNCTION GetEmployeeCountByDepartment (@DepartmentID INT) RETURNS INT AS BEGIN DECLARE @Count INT; SELECT @Count = COUNT(*) FROM employees WHERE department_id = @DepartmentID; RETURN @Count; END;
Cách sử dụng Function trong câu lệnh SQL:
SELECT d.department_name, dbo.GetEmployeeCountByDepartment(d.department_id) AS employee_count FROM departments d;
10.3. Khi nào nên sử dụng Stored Procedure hoặc Function
10.3.1. Trường hợp phù hợp cho Stored Procedure
Khi cần thực hiện các thao tác thay đổi dữ liệu: Stored Procedure phù hợp cho các tác vụ như INSERT, UPDATE, DELETE.
Khi cần thực hiện các logic phức tạp: Stored Procedure có thể chứa nhiều câu lệnh SQL và logic điều khiển (IF, WHILE, v.v.).
Khi cần kiểm soát quyền truy cập: Stored Procedure cho phép kiểm soát quyền truy cập vào dữ liệu thông qua việc cấp quyền thực thi procedure.
10.3.2. Trường hợp phù hợp cho Function
Khi cần trả về một giá trị hoặc một bảng: Function phù hợp khi bạn cần trả về một giá trị đơn hoặc một tập hợp dữ liệu có thể sử dụng trong các câu lệnh SQL.
Khi cần sử dụng trong các câu lệnh SQL: Function có thể được sử dụng trong các câu lệnh SQL như
SELECT
,WHERE
,HAVING
.Khi không cần thay đổi dữ liệu: Function không thể thực hiện các thao tác thay đổi dữ liệu, vì vậy nó phù hợp cho các tác vụ chỉ đọc dữ liệu.
Kết luận
Stored Procedure và Function là hai công cụ mạnh mẽ giúp bạn đóng gói các logic nghiệp vụ phức tạp vào các đơn vị có thể tái sử dụng. Stored Procedure phù hợp cho các tác vụ thay đổi dữ liệu và logic phức tạp, trong khi Function phù hợp cho các tác vụ trả về giá trị hoặc bảng và có thể sử dụng trong các câu lệnh SQL. Bằng cách hiểu rõ và sử dụng đúng cách cả hai công cụ này, bạn có thể cải thiện đáng kể hiệu suất và khả năng bảo trì của hệ thống cơ sở dữ liệu.
Từ vựng chuyên môn (Glossary)
Stored Procedure: Thủ tục lưu trữ.
Function: Hàm.
Parameter: Tham số.
RETURN: Trả về giá trị.
EXEC: Thực thi thủ tục lưu trữ.
SELECT: Câu lệnh chọn dữ liệu.
INSERT: Câu lệnh chèn dữ liệu.
UPDATE: Câu lệnh cập nhật dữ liệu.
DELETE: Câu lệnh xóa dữ liệu.
IF: Câu lệnh điều kiện.
WHILE: Vòng lặp.