Udostępnij za pośrednictwem


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