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.
Zobacz także