簡體   English   中英

存儲過程返回數據的不同方式

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM