[英]Different ways a stored procedure returns data
我有以下存儲過程:
CREATE PROCEDURE spGetSalaryInfo
@AverageSalary INT OUT
AS
BEGIN
SELECT MAX(1) MaxSalary;
SELECT @AverageSalary = AVG(1);
RETURN (SELECT COUNT(1) Total);
END
當我執行查詢時,我得到3個結果集。 一個來自SELECT
語句,一個來自OUTPUT
參數,最后一個來自RETURN
語句。
DECLARE @MaximumSalary INT, @AverageSalary INT, @TotalEmployee int;
EXEC @TotalEmployee = spGetSalaryInfo @AverageSalary OUT
SELECT @AverageSalary AS AVGERAGE
SELECT @TotalEmployee AS TotalEmployee
輸出:
MaxSalary AVGERAGE TotalEmployee
----------- ----------- -------------
1 1 1
如您所見,我可以通過選擇存儲過程中的SELECT
查詢或OUTPUT
參數以及return
語句來return
。
我想知道,在什么情況下我們可以使用這種類型的存儲過程。 我有點困惑。
這是從存儲過程中返回三個變量的一種奇怪方法,典型情況是選擇返回所有三個作為輸出參數,或者全部三個作為單行結果的列。
我想知道,在什么情況下我們可以使用這種類型的存儲過程。 我有點困惑。
在大多數情況下,一條select語句將返回一組數據(即一組列中有許多行),但是在某些情況下(看起來像一個),您只有一些謹慎的值,而不是一組值。
你為什么不這樣嘗試
CREATE PROCEDURE spGetSalaryInfo
AS
BEGIN
DECLARE
@TotalEmployee INT
,@MaxSalary INT
SELECT @MaxSalary = MAX(1)
SELECT @AverageSalary = AVG(1)
SELECT @TotalEmployee = COUNT(1)
SELECT
@MaxSalary AS MaxSalary
,@AverageSalary AS AVGERAGE
,@TotalEmployee AS TotalEmployee
END
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.