Piszę niektóre przechowywane procs w SQL Server 2008 i zastanawiałem się, czy tutaj jest możliwe pojęcie opcjonalnych parametrów wejściowych?
Przypuszczam, że zawsze mogłem przekazać NULL dlaParametry, których nie chcę używać, sprawdzam wartości w przechowywanym proc, a następnie biorę rzeczy stamtąd, ale byłem zainteresowany, czy koncepcja jest dostępna tutaj. Dzięki!
Odpowiedzi:
151 dla odpowiedzi № 1Możesz zadeklarować w ten sposób
CREATE PROCEDURE MyProcName
@Parameter1 INT = 1,
@Parameter2 VARCHAR (100) = "StringValue",
@Parameter3 VARCHAR (100) = NULL
AS
/* check for the NULL / default value (indicating nothing was passed */
if (@Parameter3 IS NULL)
BEGIN
/* whatever code you desire for a missing parameter*/
INSERT INTO ........
END
/* and use it in the query as so*/
SELECT *
FROM Table
WHERE Column = @Parameter
42 dla odpowiedzi nr 2
Tak to jest. Deklaruj parametr jako:
@Sort varchar(50) = NULL
Teraz nie musisz nawet przekazywać parametru. Domyślnie będzie to NULL (lub cokolwiek innego wybierzesz domyślnie).