có ba cách bạn có thể sử dụng: giá trị RETURN và tham số OUTPUT và tập hợp kết quả
CŨNG, hãy để ý nếu bạn sử dụng mẫu: SELECT @Variable=column FROM table ...
nếu có nhiều hàng được trả về từ truy vấn, thì @Variable của bạn sẽ chỉ chứa giá trị từ hàng cuối cùng mà truy vấn trả về.
RETURN VALUE
vì truy vấn của bạn trả về một trường int, ít nhất là dựa trên cách bạn đặt tên cho nó. bạn có thể sử dụng thủ thuật này:
CREATE PROCEDURE GetMyInt
( @Param int)
AS
DECLARE @ReturnValue int
SELECT @ReturnValue=MyIntField FROM MyTable WHERE MyPrimaryKeyField = @Param
RETURN @ReturnValue
GO
và bây giờ gọi thủ tục của bạn như:
DECLARE @SelectedValue int
,@Param int
SET @Param=1
EXEC @SelectedValue = GetMyInt @Param
PRINT @SelectedValue
điều này sẽ chỉ hoạt động đối với INT, vì RETURN chỉ có thể trả về một giá trị int duy nhất và giá trị null được chuyển đổi thành số không.
THAM SỐ OUTPUT
bạn có thể sử dụng một tham số đầu ra:
CREATE PROCEDURE GetMyInt
( @Param int
,@OutValue int OUTPUT)
AS
SELECT @OutValue=MyIntField FROM MyTable WHERE MyPrimaryKeyField = @Param
RETURN 0
GO
và bây giờ gọi thủ tục của bạn như:
DECLARE @SelectedValue int
,@Param int
SET @Param=1
EXEC GetMyInt @Param, @SelectedValue OUTPUT
PRINT @SelectedValue
Tham số đầu ra chỉ có thể trả về một giá trị nhưng có thể là bất kỳ kiểu dữ liệu nào
RESULT SET
cho một tập kết quả thực hiện quy trình như sau:
CREATE PROCEDURE GetMyInt
( @Param int)
AS
SELECT MyIntField FROM MyTable WHERE MyPrimaryKeyField = @Param
RETURN 0
GO
sử dụng nó như:
DECLARE @ResultSet table (SelectedValue int)
DECLARE @Param int
SET @Param=1
INSERT INTO @ResultSet (SelectedValue)
EXEC GetMyInt @Param
SELECT * FROM @ResultSet
tập kết quả có thể có nhiều hàng và nhiều cột thuộc bất kỳ kiểu dữ liệu nào