Các thủ tục được lưu trữ là một loạt các câu lệnh SQL có thể được thực thi theo một số cách. Hầu hết các DBM chính đều hỗ trợ các thủ tục được lưu trữ; tuy nhiên, không phải tất cả đều như vậy. Bạn sẽ cần xác minh bằng tài liệu trợ giúp DBMS cụ thể của mình để biết các chi tiết cụ thể. Vì tôi quen thuộc nhất với SQL Server, tôi sẽ sử dụng nó làm mẫu của mình.
Để tạo một thủ tục được lưu trữ, cú pháp khá đơn giản:
CREATE PROCEDURE <owner>.<procedure name>
<Param> <datatype>
AS
<Body>
Ví dụ:
CREATE PROCEDURE Users_GetUserInfo
@login nvarchar(30)=null
AS
SELECT * from [Users]
WHERE ISNULL(@login,login)=login
Lợi ích của các thủ tục được lưu trữ là bạn có thể tập trung logic truy cập dữ liệu vào một nơi duy nhất mà sau đó DBA có thể dễ dàng tối ưu hóa. Các thủ tục được lưu trữ cũng có một lợi ích bảo mật ở chỗ bạn có thể cấp quyền thực thi cho một thủ tục được lưu trữ nhưng người dùng sẽ không cần phải có quyền đọc / ghi trên các bảng bên dưới. Đây là bước đầu tiên tốt để chống lại việc đưa vào SQL.
Các quy trình được lưu trữ đi kèm với những nhược điểm, về cơ bản là việc bảo trì liên quan đến hoạt động CRUD cơ bản của bạn. Giả sử đối với mỗi bảng bạn có một Chèn, Cập nhật, Xóa và ít nhất một lựa chọn dựa trên khóa chính, điều đó có nghĩa là mỗi bảng sẽ có 4 thủ tục. Bây giờ hãy lấy một cơ sở dữ liệu kích thước vừa phải gồm 400 bảng và bạn có 1600 thủ tục! Và đó là giả sử bạn không có bản sao mà bạn có thể sẽ làm.
Đây là nơi mà việc sử dụng ORM hoặc một số phương pháp khác để tự động tạo các hoạt động CRUD cơ bản của bạn có rất nhiều lợi ích.