Tìm hiểu làm việc thủ tục stored procedure và hàm trong cơ sở dữ liệu SQL Server Bạn đang học cơ sở dữ liệu SQL Server thì việc thành thạo thủ tục (stored procedure) và hàm (function) là một trong những kỹ thuật quan trọng trong cơ sở dữ liệu mà bạn không thể bỏ qua. SQL Server là gì ? SQL Server, hay Microsoft SQL Server, là một hệ quản trị cơ sở dữ liệu quan hệ (Relational Database Management System - RDBMS) được phát triển bởi Microsoft. Được ra mắt lần đầu vào năm 1989, SQL Server được thiết kế để quản lý và lưu trữ dữ liệu, cho phép người dùng truy vấn, thao tác và quản lý dữ liệu một cách hiệu quả và an toàn. Làm việc với Thủ tục (Stored Procedure) trong SQL Server Thủ tục lưu trữ (Stored Procedure) trong SQL Server là một tập hợp các câu lệnh SQL được lưu trữ trong cơ sở dữ liệu, hoạt động như một tiểu chương trình (subroutine) và có thể được gọi ra để thực hiện các hành động cụ thể. Thủ tục giúp thực hiện các tác vụ như truy vấn, biến đổi, cập nhật dữ liệu, tạo báo cáo cơ bản, tối ưu hóa hiệu suất ứng dụng và tăng cường bảo mật cơ sở dữ liệu. Cú pháp tạo thủ tục lưu trữ Dưới đây là cú pháp cơ bản để tạo một thủ tục lưu trữ trong SQL Server: CREATE PROCEDURE Ten_Thu_Tuc @ThamSo1 KieuDuLieu, @ThamSo2 KieuDuLieu AS BEGIN -- Các câu lệnh SQL thực thi SELECT * FROM Ten_Bang WHERE Cot1 = @ThamSo1 AND Cot2 = @ThamSo2; END; Ví dụ: Giả sử chúng ta có một bảng EMPLOYEES với các cột EmployeeID, FirstName, LastName, và Salary. Chúng ta sẽ tạo một thủ tục để tăng lương cho các nhân viên. 1. Tạo thủ tục không có tham số: Thủ tục này sẽ tăng lương của tất cả nhân viên lên 10%. CREATE PROCEDURE TangLuong AS BEGIN UPDATE EMPLOYEES SET Salary = Salary * 1.1; END; Để gọi thủ tục này, bạn sử dụng lệnh: EXEC TangLuong; 2. Tạo thủ tục có tham số: Thủ tục này sẽ tăng lương của các nhân viên lên một tỷ lệ phần trăm cụ thể. CREATE PROCEDURE TangLuongTheoPhanTram @PhanTram INT AS BEGIN DECLARE @TyLe DECIMAL(3, 2) = 1 + @PhanTram / 100.0; UPDATE EMPLOYEES SET Salary = Salary * @TyLe; END; Để gọi thủ tục này với tỷ lệ tăng lương là 15%, bạn sử dụng lệnh: EXEC TangLuongTheoPhanTram @PhanTram = 15; Lợi ích của thủ tục lưu trữ: Tăng hiệu suất: Thủ tục lưu trữ được biên dịch và tối ưu hóa một lần, sau đó có thể được thực thi nhiều lần mà không cần biên dịch lại. Tăng cường bảo mật: Giúp hạn chế truy cập trực tiếp vào bảng, từ đó nâng cao mức độ bảo mật cho cơ sở dữ liệu hoặc ứng dụng. Tái sử dụng: Thủ tục có thể được sử dụng lại bởi nhiều người dùng và ứng dụng chỉ bằng cách gọi nó, giúp giảm thiểu việc phải viết lại các câu lệnh SQL nhiều lần và tiết kiệm thời gian. Làm việc với hàm (function) trong SQL Server Hàm (function) trong SQL Server là các chương trình con được lưu trữ trong cơ sở dữ liệu, giúp thực hiện các tác vụ cụ thể và trả về kết quả. Hàm có thể nhận đầu vào, thực hiện xử lý và trả về kết quả dưới dạng một giá trị đơn hoặc một bảng dữ liệu. Có hai loại hàm chính trong SQL Server: Scalar-valued Functions và Table-valued Functions. Scalar-valued Functions Scalar-valued functions trả về một giá trị đơn. Dưới đây là cú pháp và ví dụ minh họa: Cú pháp: CREATE FUNCTION Ten_Ham (@ThamSo KieuDuLieu) RETURNS KieuDuLieu AS BEGIN -- Các câu lệnh SQL RETURN GiaTri; END; Ví dụ: Hàm tính diện tích hình tròn dựa trên bán kính: CREATE FUNCTION dbo.TinhDienTichHinhTron (@BanKinh FLOAT) RETURNS FLOAT AS BEGIN RETURN PI() * @BanKinh * @BanKinh; END; Gọi hàm: SELECT dbo.TinhDienTichHinhTron(5); Table-valued Functions Table-valued functions trả về một bảng dữ liệu. Có hai loại: Inline Table-valued Functions và Multi-statement Table-valued Functions. Cú pháp Inline Table-valued Function: CREATE FUNCTION Ten_Ham (@ThamSo KieuDuLieu) RETURNS TABLE AS RETURN ( -- Câu lệnh SELECT trả về bảng SELECT Cot1, Cot2 FROM Ten_Bang WHERE DieuKien = @ThamSo ); Ví dụ: Hàm trả về danh sách nhân viên theo phòng ban: CREATE FUNCTION dbo.LayNhanVienTheoPhongBan (@PhongBanID INT) RETURNS TABLE AS RETURN ( SELECT EmployeeID, FirstName, LastName FROM Employees WHERE DepartmentID = @PhongBanID ); Gọi hàm: SELECT * FROM dbo.LayNhanVienTheoPhongBan(1); Cú pháp Multi-statement Table-valued Function: CREATE FUNCTION Ten_Ham (@ThamSo KieuDuLieu) RETURNS @BangKetQua TABLE (Cot1 KieuDuLieu, Cot2 KieuDuLieu) AS BEGIN -- Các câu lệnh SQL INSERT INTO @BangKetQua SELECT Cot1, Cot2 FROM Ten_Bang WHERE DieuKien = @ThamSo; RETURN; END; Ví dụ: Hàm trả về danh sách nhân viên có lương cao hơn mức lương trung bình: CREATE FUNCTION dbo.LayNhanVienLuongCaoHonTrungBinh () RETURNS @NhanVien TABLE (EmployeeID INT, FirstName NVARCHAR(50), LastName NVARCHAR(50), Salary FLOAT) AS BEGIN INSERT INTO @NhanVien SELECT EmployeeID, FirstName, LastName, Salary FROM Employees WHERE Salary > (SELECT AVG(Salary) FROM Employees); RETURN; END; Gọi hàm: SELECT * FROM dbo.LayNhanVienLuongCaoHonTrungBinh(); Những hàm này giúp bạn đơn giản hóa công việc lập trình, tái sử dụng mã và cải thiện hiệu suất truy vấn. Như vậy qua bài viết này, Stanford đã chia sẻ cho các bạn đang học SQL Server hiểu hơn về thủ tục (stored procedure) và hàm (functions) cũng như cách thức định nghĩa, sử dụng nó trong SQL Server. Bạn có thể làm theo các ví dụ trong bài viết sau đó khi hiểu rồi có thể vận dụng vào bài toán cụ thể của mình để hiểu hơn những kiến thức về SQL bổ ích này nhé. Bên cạnh đó, bạn có thể bắt đầu ngay con đường học cơ sở dữ liệu SQL bằng việc đăng ký tham gia khoá cơ sở dữ liệu SQL cơ bản tại đây: http://bit.ly/2SLPYFF. Hoặc gọi ngay cho Stanford theo hotline: 0963.723.236 - 0866.586.366 để được gọi lại tư vấn trực tiếp nhé. ==========🎬 🎬 🎬========== ☎️STANFORD – ĐÀO TẠO VÀ PHÁT TRIỂN CÔNG NGHỆ Hotline: 0963 723 236 - 0866 586 366 Website: https://stanford.com.vn Facebook: https://www.facebook.com/Stanford.com.vn Youtube: http://bit.ly/2TkKT7I Tags: thủ tục, stored procedure