Udostępnij za pośrednictwem


Zwracanie danych przy użyciu parametrów wyjściowych

Jeśli określisz kluczowe dane wyjściowe dla parametru w definicji procedura procedura składowana można zwrócić bieżącą wartość parametru do programu wywołującego, gdy zamyka procedura składowana.Aby zapisać wartość parametru w zmiennej używanej do programu wywołującego, program wywołujący musi kluczowe wyjścia podczas wykonywania procedura składowana.

Przykłady

W poniższym przykładzie przedstawiono procedura składowana z danych wejściowych i parametrów wyjściowych.Pierwszy parametr w procedura składowana @SalesPerson otrzyma wartość wejściowa określonym przez program wywołujący i drugi parametr @SalesYTD jest używane do zwracania wartości do programu wywołującego.Instrukcja SELECT używa @SalesPerson parametr uzyskanie odpowiedniego SalesYTD wartość i przypisuje wartości do @SalesYTD parametru wyjściowego.

USE AdventureWorks2008R2;
GO
IF OBJECT_ID('Sales.uspGetEmployeeSalesYTD', 'P') IS NOT NULL
    DROP PROCEDURE Sales.uspGetEmployeeSalesYTD;
GO
CREATE PROCEDURE Sales.uspGetEmployeeSalesYTD
@SalesPerson nvarchar(50),
@SalesYTD money OUTPUT
AS  

    SET NOCOUNT ON;
    SELECT @SalesYTD = SalesYTD
    FROM Sales.SalesPerson AS sp
    JOIN HumanResources.vEmployee AS e ON e.BusinessEntityID = sp.BusinessEntityID
    WHERE LastName = @SalesPerson;
RETURN
GO

Poniższe instrukcje wykonać procedura składowana wartość dla parametru wejściowego i zapisuje wartości wyjściowych procedura składowana w @SalesYTD zmiennej lokalnej do programu wywołującego.

-- Declare the variable to receive the output value of the procedure.
DECLARE @SalesYTDBySalesPerson money;
-- Execute the procedure specifying a last name for the input parameter
-- and saving the output value in the variable @SalesYTDBySalesPerson
EXECUTE Sales.uspGetEmployeeSalesYTD
    N'Blythe', @SalesYTD = @SalesYTDBySalesPerson OUTPUT;
-- Display the value returned by the procedure.
PRINT 'Year-to-date sales for this employee is ' + 
    convert(varchar(10),@SalesYTDBySalesPerson);
GO

Wartooci wejociowych można również określić dla parametrów wyjściowych podczas wykonywania procedura składowana.Umożliwia to procedura składowana, aby otrzymać wartość z program wywołujący, zmienić lub wykonywać operacje z nim, a następnie powrócić do programu wywołującego nową wartość.W poprzednim przykładzie @SalesYTDBySalesPerson zmiennej można przypisać wartość przed wykonaniem procedura składowana.@SalesYTD Zmienna zawiera wartość parametru w treści procedura składowana, a wartość @SalesYTD zmienna jest zwracana do wywołujący program, gdy zamyka procedura składowana.To jest często określane jako "przekazywany przez odwołanie możliwości".

Jeśli określisz wyjścia dla parametru podczas możesz wykonać procedura składowana, a parametr nie jest zdefiniowany za pomocą danych wyjściowych w procedurze przechowywanej, zostanie wyświetlony komunikat o błędzie.Można wykonać procedura składowana z parametrów wyjściowych i nie określono WYJŚCIOWEGO podczas wykonywania procedura składowana.Błąd nie jest zwracany, ale nie można używać wartości wyjściowych do programu wywołującego.