Określanie domyślnej wartości parametru
Można utworzyć procedura składowana z opcjonalnymi parametrami, określając wartość domyślną dla parametrów opcjonalnych.Podczas wykonywania procedura składowana, używana jest wartość domyślna, jeśli wartość nie została określona.
Określenie wartości domyślne jest konieczne, ponieważ zwracany jest błąd systemu, jeśli parametr ma wartość domyślną, określone w procedurze przechowywanej i program wywołujący nie przewiduje wartość parametru podczas wykonywania procedura składowana.
Jeśli nie można określić odpowiednio jako domyślne dla parametru, można określić wartość NULL jako domyślne dla parametru i zwracają niestandardowy komunikat, jeśli procedura składowana jest wykonywane bez wartość parametru procedura składowana.
Ostrzeżenie
Jeśli wartością domyślną jest ciąg znaków zawierający spacje lub znaki interpunkcyjne lub jeśli zaczyna się od numeru (na przykład 6xxx), musi być ujęty w cudzysłów pojedynczy, proste.
Przykłady
Poniższy przykład tworzy usp_GetSalesYTD procedury z jednego parametru wejściowego, @SalesPerson.NULL jest przypisany jako wartość domyślna dla parametru i jest używany w instrukcji obsługa błędów zwrócić niestandardowy komunikat o przypadkach, gdy procedura składowana jest wykonywane bez wartość dla @SalesPerson parametru.
USE AdventureWorks2008R2;
GO
IF OBJECT_ID('Sales.uspGetSalesYTD', 'P') IS NOT NULL
DROP PROCEDURE Sales.uspGetSalesYTD;
GO
CREATE PROCEDURE Sales.uspGetSalesYTD
@SalesPerson nvarchar(50) = NULL -- NULL default value
AS
SET NOCOUNT ON;
-- Validate the @SalesPerson parameter.
IF @SalesPerson IS NULL
BEGIN
PRINT 'ERROR: You must specify the last name of the sales person.'
RETURN
END
-- Get the sales for the specified sales person and
-- assign it to the output parameter.
SELECT SalesYTD
FROM Sales.SalesPerson AS sp
JOIN HumanResources.vEmployee AS e ON e.BusinessEntityID = sp.BusinessEntityID
WHERE LastName = @SalesPerson;
RETURN
GO
Poniższy przykład wykonuje procedura składowana.Pierwsza instrukcja wykonuje procedura składowana, bez określenia wartości wejściowej.To powoduje błąd instrukcji obsługi w procedura składowana do zwracania niestandardowy komunikat o błędzie.Druga instrukcja dostaw wartości wejściowe i zwraca oczekiwaną zestaw wyników.
-- Run the stored procedure without specifying an input value.
EXEC Sales.usp_GetSalesYTD;
GO
-- Run the stored procedure with an input value.
EXEC Sales.usp_GetSalesYTD N'Blythe';
GO
W poniższym przykładzie my_proc procedurę z wartościami domyślnymi dla każdego z trzech parametrów @ pierwszego, drugi @, i @ trzeciegoi wartości wyświetlane, gdy procedura składowana jest wykonywane z innych wartości parametrów:
IF OBJECT_ID('dbo.my_proc', 'P') IS NOT NULL
DROP PROCEDURE dbo.my_proc;
GO
CREATE PROCEDURE dbo.my_proc
@first int = NULL, -- NULL default value
@second int = 2, -- Default value of 2
@third int = 3 -- Default value of 3
AS
SET NOCOUNT ON;
SELECT @first, @second, @third;
GO
EXECUTE dbo.my_proc; -- No parameters supplied
GO
Oto zestaw wyników.
NULL 2 3
EXECUTE dbo.my_proc 10, 20, 30;-- All parameters supplied
GO
Oto zestaw wyników.
10 20 30
EXECUTE dbo.my_proc @second = 500; -- Only second parameter supplied by name
GO
Oto zestaw wyników.
NULL 500 3
EXECUTE dbo.my_proc 40, @third = 50 -- Only first and third parameters
-- are supplied.
Oto zestaw wyników.
40 2 50
Zobacz także