Udostępnij za pośrednictwem


Określanie kierunku parametr

Kierunek parametru jest w rozumieniu wartość jest przekazywany do procedura składowana parametr wejściowy lub, co oznacza procedura składowana zwraca wartość do programu wywołującego za pośrednictwem parametru wyjściowego.Domyślnie jest parametrem wejściowym.

Aby określić parametr wyjściowy, należy określić kluczowe dane wyjściowe w definicji parametru w procedura składowana.Procedura składowana zwraca bieżącą wartość parametru wyjściowego do programu wywołującego, gdy zamyka procedurę przechowywaną.Program wywołujący musi także kluczowe wyjścia podczas wykonywania procedura składowana do zapisywania wartości parametru w zmiennej używanej do programu wywołującego.Aby uzyskać więcej informacji, zobacz Zwracanie danych przy użyciu parametrów wyjściowych.

Przykłady

Poniższy przykład tworzy Production.usp_GetList procedura składowana, która zwraca listę produktów, których ceny, które nie przekraczają określonej kwoty.W przykładzie przy użyciu wielu instrukcji SELECT i wiele parametrów wyjściowych.Parametry wyjściowe umożliwiają procedury zewnętrznego, partia lub więcej niż jedną Transact-SQL instrukcja wartość dostęp do zestawu podczas wykonywania procedury.

USE AdventureWorks2008R2;
GO
IF OBJECT_ID ( 'Production.uspGetList', 'P' ) IS NOT NULL 
    DROP PROCEDURE Production.uspGetList;
GO
CREATE PROCEDURE Production.uspGetList @Product varchar(40) 
    , @MaxPrice money 
    , @ComparePrice money OUTPUT
    , @ListPrice money OUT
AS
    SET NOCOUNT ON;
    SELECT p.[Name] AS Product, p.ListPrice AS 'List Price'
    FROM Production.Product AS p
    JOIN Production.ProductSubcategory AS s 
      ON p.ProductSubcategoryID = s.ProductSubcategoryID
    WHERE s.[Name] LIKE @Product AND p.ListPrice < @MaxPrice;
-- Populate the output variable @ListPprice.
SET @ListPrice = (SELECT MAX(p.ListPrice)
        FROM Production.Product AS p
        JOIN  Production.ProductSubcategory AS s 
          ON p.ProductSubcategoryID = s.ProductSubcategoryID
        WHERE s.[Name] LIKE @Product AND p.ListPrice < @MaxPrice);
-- Populate the output variable @compareprice.
SET @ComparePrice = @MaxPrice;
GO

Wykonanie usp_GetList , aby powrócić do listy Adventure Works produktów (Rowery), które kosztują mniej niż 700 $.Parametry wyjściowe @ koszt i @ compareprices są używane z język sterowania przepływem do zwracania wiadomości w wiadomości okna.

Ostrzeżenie

Musi być zdefiniowana zmienna wyjścia podczas tworzenia procedury, jak również podczas używania zmiennej.Nazwa parametru i nazwa zmiennej nie muszą odpowiadać.However, the data type and parameter positioning must match (unless @listprice= variable is used).

DECLARE @ComparePrice money, @Cost money 
EXECUTE Production.uspGetList '%Bikes%', 700, 
    @ComparePrice OUT, 
    @Cost OUTPUT
IF @Cost <= @ComparePrice 
BEGIN
    PRINT 'These products can be purchased for less than 
    $'+RTRIM(CAST(@ComparePrice AS varchar(20)))+'.'
END
ELSE
    PRINT 'The prices for all products in this category exceed 
    $'+ RTRIM(CAST(@ComparePrice AS varchar(20)))+'.'

Oto częściowe zestaw wyników:

Product                                            List Price
-------------------------------------------------- ------------------
Road-750 Black, 58                                 539.99
Mountain-500 Silver, 40                            564.99
Mountain-500 Silver, 42                            564.99
...
Road-750 Black, 48                                 539.99
Road-750 Black, 52                                 539.99

(14 row(s) affected)

These items can be purchased for less than $700.00.