Các thủ tục và hàm được lưu trữ có các thuộc tính khác nhau. Chúng có những hạn chế nhất định và kết quả là khác nhau trong cả hai trường hợp. Thủ tục được lưu trữ cần cả tham số đầu vào và đầu ra, nhưng không cần tham số đầu ra trong Hàm.
Hàm có thể được gọi bằng cách sử dụng thủ tục lưu trữ, nhưng cách ngược lại là không thể.
Các nội dung chính
- Các thủ tục được lưu trữ thực hiện các hành động trong cơ sở dữ liệu và có thể trả về nhiều giá trị dưới dạng tham số đầu ra.
- Các hàm trả về một giá trị duy nhất và có thể được sử dụng trong các câu lệnh SQL dưới dạng biểu thức.
- Các thủ tục lưu trữ có thể sửa đổi dữ liệu cơ sở dữ liệu, trong khi các hàm ở dạng chỉ đọc.
Thủ tục lưu trữ so với chức năng
Sự khác biệt giữa Thủ tục được lưu trữ và Hàm là Hàm sẽ luôn cung cấp đầu ra, nhưng Thủ tục được lưu trữ đôi khi có thể không tạo ra kết quả. Thông tin đầu vào và đầu ra phải được đề cập trong Thủ tục được lưu trữ, nhưng nó không giống như vậy trong Hàm. Hàm chỉ cần một tham số đầu vào. Một thủ tục được lưu trữ có thể tạo ra một giá trị lớn có thể lên tới 1024 giá trị, nhưng Hàm sẽ chỉ trả về một giá trị cụ thể.

Thủ tục lưu trữ thường được gọi độc lập. Lệnh thực thi giúp gọi thủ tục được lưu trữ một cách độc lập. Điều này không thể được gọi từ chức năng. Nó giúp gọi các chức năng.
Các chức năng có thể được gọi từ thủ tục được lưu trữ. Kết quả là thủ tục được lưu trữ có thể trả về 1024 giá trị.
Hàm không cần bất kỳ tham số đầu ra cụ thể nào. Nó chỉ yêu cầu các tham số đầu vào để tạo ra kết quả. Nó không gọi nhiều kết quả. Thay vào đó, nó chỉ tạo ra một kết quả.
Một hàm có thể được viết và nhúng trong câu lệnh SELECT. Nó sẽ luôn tạo ra kết quả. Kết quả chỉ là một giá trị và một giá trị cụ thể.
Bảng so sánh
Các thông số so sánh | Thủ tục lưu trữ | Chức năng |
---|---|---|
Yêu cầu | Tham số đầu vào và đầu ra | Tham số đầu vào |
Kết quả | Nhiều giá trị lớn | kết quả duy nhất |
Được mời bởi | Không áp dụng | Thủ tục lưu trữ |
Kích thước giá trị trả về | Chữ số 1024 | 1 chữ số |
Xác suất đầu ra | Trung bình | Cao |
Sửa đổi dữ liệu | Có | Không |
Thủ tục lưu trữ là gì?
Hoạt động của Thủ tục lưu trữ không phụ thuộc vào bất cứ điều gì. Đúng hơn là nó hoạt động độc lập và tạo ra kết quả. Nó được sử dụng để gọi các hàm.
Nó phụ thuộc vào việc Thủ tục được lưu trữ có tạo ra kết quả hay không. Đôi khi không có kết quả, và đôi khi có nhiều kết quả.
Thủ tục được lưu trữ cần các tham số đầu vào và đầu ra để tạo ra kết quả. Thủ tục được lưu trữ không thể hoạt động trong một số trường hợp, chẳng hạn như nó không thể hoạt động trong các câu lệnh có, chọn hoặc ở đâu.
Dữ liệu được sử dụng trong Chức năng lưu trữ có thể được sửa đổi bất kỳ lúc nào. Đây là những đối tượng được biên dịch trước.
Các đối tượng được biên dịch trước được biên dịch lần đầu tiên và hệ thống ghi nhớ định dạng của dữ liệu. Các định dạng này hữu ích khi những thứ khác được người dùng biên dịch.
Các giá trị tiếp tục thay đổi. Kết quả có thể là một giá trị rất lớn hoặc giá trị nhỏ và đôi khi không có giá trị nào cả.
Điều này làm giảm lưu lượng truy cập máy chủ vì nó giảm các truy vấn SQL thành một dòng nhỏ, do đó việc truyền tải nhanh hơn. Nó thậm chí còn làm giảm chu kỳ phát triển.
Công việc có thể được thực hiện trong thời gian rất ngắn. Nó dễ dàng được sử dụng bởi nhiều người dùng vì nó là một thủ tục được lưu trữ.

Chức năng là gì?
Các hàm được chia thành hai loại là hàm do người dùng định nghĩa và hàm dựng sẵn.
Các hàm tích hợp đã có sẵn trong SQL Server, trong khi các hàm do người dùng định nghĩa phải được người dùng khai báo trong các hàm SQL. Nó cần các tham số đầu vào và không cần các tham số đầu ra.
Nó luôn tạo ra một giá trị cụ thể. Việc thực thi mã trở nên nhanh hơn bằng cách sử dụng các hàm do người dùng xác định này. Các định dạng đã có sẵn, do đó việc biên dịch mã trở nên dễ dàng và không có quá trình tốn thời gian.
Việc thực thi trở nên nhanh hơn khi các định dạng được sử dụng liên tục để thực thi.
Không có khả năng trả về giá trị null. Nó sẽ luôn trả về một giá trị cụ thể. Các hàm này không thể gọi các hàm do người dùng định nghĩa.
Các hàm có thể được gọi bằng cách sử dụng các câu lệnh chọn trong máy chủ SQL. Trong loại hàm này, UDF được sử dụng trong tập kết quả trong mệnh đề nối.
Các chức năng không thể sử dụng các khối thử bắt. Nó không cần một tham số đầu ra để tạo ra kết quả. Không có yêu cầu cho các tham số đầu ra trong các chức năng.
Các câu lệnh DML không thể được sử dụng trong SQL, nhưng các câu lệnh chọn có thể được sử dụng dễ dàng trong các loại máy chủ này.

Sự khác biệt chính giữa thủ tục và chức năng được lưu trữ
- Một thủ tục được lưu trữ cần cả tham số đầu vào và đầu ra, nhưng Hàm chỉ cần tham số đầu vào.
- Thủ tục được lưu trữ trả về nhiều kết quả, nhưng Hàm không bao giờ trả về nhiều câu trả lời.
- Một thủ tục được lưu trữ không thể được gọi từ hàm, nhưng một hàm có thể được gọi từ Thủ tục được lưu trữ.
- Thủ tục được lưu trữ có thể trả về 1024 giá trị cùng một lúc, nhưng kết quả là Hàm sẽ chỉ cung cấp một giá trị.
- Thủ tục được lưu trữ đôi khi có thể không trả lời, nhưng Hàm sẽ luôn đưa ra đầu ra.
- Dữ liệu có thể được sửa đổi trong Thủ tục lưu trữ nhưng không thể sửa đổi trong Chức năng.