Thủ tục lưu trữ SQL Server

Thủ tục lưu trữ mang lại hiệu quả cao và lợi ích bảo mật

Microsoft SQL Server cung cấp cơ chế thủ tục lưu sẵn để đơn giản hóa quy trình phát triển cơ sở dữ liệu bằng cách nhóm các câu lệnh Transact-SQL thành các khối có thể quản lý được. Thủ tục lưu trữ được đánh giá cao bởi hầu hết các nhà phát triển SQL Server, những người tìm thấy những lợi ích hiệu quả và an ninh mà họ gặt hái cũng đáng để đầu tư trả trước kịp thời.

Lợi ích của việc sử dụng thủ tục lưu trữ

Tại sao nhà phát triển nên sử dụng các thủ tục được lưu trữ?

Dưới đây là những lợi ích chính của công nghệ này:

Các thủ tục được lưu trữ tương tự như các hàm do người dùng định nghĩa, nhưng có những khác biệt nhỏ.

Kết cấu

Các thủ tục được lưu trữ tương tự như các cấu trúc được thấy trong các ngôn ngữ lập trình khác.

Chúng chấp nhận dữ liệu dưới dạng các tham số đầu vào được xác định tại thời gian thực hiện. Các tham số đầu vào (nếu được thực hiện) được sử dụng trong việc thực hiện một loạt các câu lệnh tạo ra một số kết quả. Kết quả này được trả về môi trường gọi thông qua việc sử dụng một recordset, các tham số đầu ra và một mã trả về.

Điều đó nghe có vẻ giống như một ngụm, nhưng bạn sẽ thấy rằng các thủ tục lưu trữ thực sự khá đơn giản.

Thí dụ

Chúng ta hãy xem một ví dụ thực tế liên quan đến bảng có tên là hàng tồn kho được hiển thị ở dưới cùng của trang này. Thông tin này được cập nhật theo thời gian thực và các nhà quản lý kho hàng liên tục kiểm tra mức độ sản phẩm được lưu trữ tại kho của họ và có sẵn để giao hàng. Trong quá khứ, mỗi người quản lý sẽ chạy các truy vấn tương tự như sau:

Chọn sản phẩm, số lượng
TỪ kho
WHERE Warehouse = 'FL'

Điều này dẫn đến hiệu suất không hiệu quả tại SQL Server. Mỗi khi một người quản lý kho thực hiện truy vấn, máy chủ cơ sở dữ liệu đã buộc phải biên dịch lại truy vấn và thực thi nó từ đầu. Nó cũng yêu cầu người quản lý kho chứa kiến ​​thức về SQL và các quyền thích hợp để truy cập thông tin bảng.

Thay vào đó, quá trình có thể được đơn giản hóa thông qua việc sử dụng một thủ tục lưu sẵn. Đây là mã cho một thủ tục gọi là sp_GetInventory, truy xuất các mức hàng tồn kho cho một kho lưu trữ nhất định.

CREATE PROCEDURE sp_GetInventory
@location varchar (10)
NHƯ
Chọn sản phẩm, số lượng
TỪ kho
WHERE Warehouse = @location

Người quản lý kho Florida sau đó có thể truy cập các mức hàng tồn kho bằng cách phát lệnh:

EXECUTE sp_GetInventory 'FL'

Người quản lý kho của New York có thể sử dụng cùng một thủ tục được lưu trữ để truy cập vào khoảng không quảng cáo của khu vực đó:

EXECUTE sp_GetInventory 'NY'

Cấp, đây là một ví dụ đơn giản, nhưng những lợi ích của trừu tượng có thể được nhìn thấy ở đây. Người quản lý kho không cần phải hiểu SQL hoặc các hoạt động bên trong của thủ tục. Từ góc độ hiệu suất, quy trình được lưu trữ hoạt động tốt. SQL Server tạo một kế hoạch thực hiện một lần và sau đó sử dụng lại nó bằng cách cắm vào các tham số thích hợp tại thời gian thực hiện.

Bây giờ bạn đã học được những lợi ích của các thủ tục được lưu trữ, hãy ra khỏi đó và sử dụng chúng.

Hãy thử một vài ví dụ và đo lường các cải tiến hiệu suất đạt được — bạn sẽ ngạc nhiên!

Bảng khoảng không quảng cáo

ID Sản phẩm Kho Số lượng
142 Đậu xanh NY 100
214 Đậu Hà Lan FL 200
825 Ngô NY 140
512 đậu lima NY 180
491 Cà chua FL 80
379 Dưa hấu FL 85