Giới thiệu SQL Server Stored Procedures

SQL Server Stored Procedures
SQL Server Stored Procedures

Trong bài viết này, chúng ta sẽ cùng nhau tìm hiểu cơ bản về stored procedures. Bắt đầu với các thao tác cơ bản như khởi tạo, thực thi, chỉnh sửa và xóa.

Khái niệm Stored Procedures

Procedure (thủ tục) không phải là một khái niệm mới hay riêng biệt của SQL. Chúng ta có thể đã nghe qua các khái niệm lập trình hàm hay lập trình thủ tục trong một số ngôn ngữ lập trình trước đây.

Một cách đơn giản nhất, procedure là tập hợp một số câu lệnh nhằm giải quyết bài toán nào đó. Và mỗi bài toán sẽ có 1 dữ liệu đầu vào, dữ liệu đầu ra và 1 logic cụ thể.

Những lợi ích Stored Procedure mang lại

Giảm giao tiếp giữa server/client

Khi làm việc với stored procedure, chúng ta chỉ cần thực hiện 1 câu lệnh (gọi hàm thực thi), thay vì vài thực thi lần lượt hàng loạt câu lệnh. Việc này giúp việc giao tiếp liên tục giữa client và server. Giảm thiểu các rủi ro do đường truyền gây ra.

Tái sử dụng code

Ví dụ chúng ta có một thao tác như sau: Kiểm tra số lượng sản phẩm X. Công việc này được lặp đi lặp lại khá nhiều lần. Thay vì viết nhiều dòng mã T-SQL, chúng ta sẽ đóng gói chúng lại thành 1 procedure. Mỗi khi cần, chúng ta gọi thực thi nó. Công việc ấy nhanh và đơn giản hơn rất nhiều so với việc viết lại câu truy vấn.

Dễ dàng bảo trì, phát triển

Cũng là công việc trên, kiểm tra số lượng sản phẩm X. Khi cấu trúc trong CSDL thay đổi. Có thể logic để kiểm tra sản phẩm X sẽ thay đổi. Nếu công việc ấy nằm trong 1 procedure. Các bạn sẽ chỉ cần cập nhật, kiểm thử lại 1 vị trí thôi.

Cải thiện hiệu năng cho hệ thống

Xét về phương thức hoạt động, bạn có thể hình dung. Procedure sẽ được biên dịch vào lần chạy đầu tiên, sau đó nó sẽ được lưu vào bộ nhớ tạm (cache). Những lần chạy sau sẽ nhanh hơn và tiết kiệm tài nguyên của hệ thống.

Phân loại Stored Procedures

User-defined

Đây là phần trọng tâm của loạt bài viết này. Chúng ta sẽ tự định nghĩa các stored procedure. Đặt tên, quy định tham số, kiểu trả về và các logic bên trong. Các stored procedure thuộc nhóm này thường được phát triển bởi mã T-SQL (phương thức chính trong loạt bài viết) hoặc các ngôn ngữ CLR (common runtime language) của Microsoft.

Temporary

Temporary procedure là một dạng của user-defined. Điểm khác biệt duy nhất là các procedure này được lưu trữ trong tempdb. Có 2 loại Temporary procedure là global và local, chúng sẽ có cách đặt tên khác nhau và phạm vi hoạt động.

Local temporary procedure có tên bắt đầu bằng dấu #. Nó sẽ chỉ hiển thị với người tạo ra nó. Và sẽ biến mất vào cuối phiên làm việc.

Global temporary procedure có tên bắt đầu bằng 2 dấu ##. Nó sẽ hiển thị với tất cả các users đang có phiên làm việc. Và nó sẽ biến mất khi users cuối cùng làm việc với nó kết thúc phiên.

System

Là các stored procedures được định nghĩa sẵn bởi hệ thống. Chúng ta chỉ việc tham khảo tài liệu trước khi sử dụng chúng.

Extended User-Defined

Là các stored procedure mở rộng. Trong các trường hợp đặc biệt và nâng cao. Chúng ta có thể sử dụng các ngôn ngữ như C/C++. Kết hợp với API của SQL Server, để tạo thành các procedures của mình. Các procedures này sẽ được đóng gói vào các file DLL. SQL Server có thể load và thực thi các procedures này.