
Khi làm việc với stored procedure, chúng ta sẽ chia nhỏ mỗi tác vụ thành một procedure. Một tác vụ đôi khi bao gồm nhiều procedure phối hợp lại với nhau. Khi đó, kết quả của một vài procedures có thể là input của một procedure khác. Để làm được việc đó chúng ta sẽ cần lưu kết quả của procedure vào một biến. Biến số để chúng ta lấy một kết quả ra khỏi procedure được gọi là output parameter.
Để khai báo một output parameter, chúng ta sẽ sử dụng cú pháp:
1 |
parameter_name data_type OUTPUT |
Ngoài việc thêm từ khóa OUTPUT, thì output parameter cũng hoạt động như một parameter bình thường. Chúng ta cùng xem qua ví dụ:
1 2 3 4 5 6 7 8 9 10 11 12 |
CREATE PROCEDURE uspInvoiceList( @year INT, @invoice_count INT OUTPUT ) AS BEGIN SELECT * FROM Invoice WHERE YEAR(InvoiceDate) = @year SELECT @invoice_count = @@ROWCOUNT END; |
Trong ví dụ này, ngoài tham số year mình sẽ khai báo thêm 1 tham số output là invoice_count. Mục đích của tham số này là đếm số lượng invoice được tìm thấy. Đoạn mã SELECT @invoice_count = @@ROWCOUNT
có ý nghĩa là truy vấn và lưu trữ số lượng dòng dữ liệu trong câu truy vấn trước đó. Lấy kết quả và lưu vào biến invoice_count.
Để thực thi và nhận giá trị từ procedure, mình có đoạn mã sau:
1 2 3 4 5 |
DECLARE @count INT; EXEC uspInvoiceList @year=2013, @invoice_count = @count OUTPUT SELECT @count AS 'Number of invoices found'; |
Lúc này, khi thực thi, kết quả mình nhần được sẽ là:

Ngoài câu truy vấn, mình còn nhận được số lượng invoice được lưu trữ trong một biến. Nếu cần thiết, mình có thể sử dụng biến này trong một câu truy vấn khác. Hoặc sử dụng biến đó làm tham số đầu vào của một procedure khác.