Especificando o valor padrão para um parâmetro
Você pode criar um procedimento armazenado com parâmetros opcionais especificando um valor padrão para parâmetros opcionais. Quando o procedimento armazenado é executado, o valor padrão é usado se nenhum outro valor foi especificado.
É necessário especificar valores padrão porque um erro de sistema será retornado se um parâmetro não tiver um valor padrão especificado no procedimento armazenado e se o programa de chamada não fornecer um valor para o parâmetro ao executar o procedimento armazenado.
Se não for possível especificar um valor como padrão para o parâmetro, é possível especificar NULL como padrão para um parâmetro, fazendo o procedimento armazenado retornar uma mensagem personalizada se for executado sem um valor para o parâmetro.
Observação |
---|
Se o valor padrão for uma cadeia de caracteres contendo pontuação ou espaços em branco incorporados ou caso comece com um número (por exemplo, 6xxx), deve ser incluído entre aspas simples. |
Exemplos
O exemplo a seguir cria o procedimento armazenado usp_GetSalesYTD com um parâmetro de entrada, @SalesPerson. NULL será atribuído como valor padrão para o parâmetro e será utilizado em instruções de tratamento de erros para retornar uma mensagem de erro personalizada nos casos de execução do procedimento sem um valor para o parâmetro @SalesPerson.
USE AdventureWorks;
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.EmployeeID = sp.SalesPersonID
WHERE LastName = @SalesPerson;
RETURN
GO
O exemplo a seguir executa o procedimento armazenado. A primeira instrução executa o procedimento armazenado sem especificar um valor de entrada, o que faz as instruções de tratamento de erros no procedimento armazenado retornarem a mensagem de erro personalizada. A segunda instrução fornece um valor de entrada e retorna o conjunto de resultados esperado.
-- 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
O exemplo a seguir demonstra o procedimento my_proc com valores padrão para cada um dos três parâmetros @first, @second e @third e os valores exibidos na execução do procedimento armazenado com outros valores de parâmetros:
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
Conjunto de resultados.
NULL 2 3
EXECUTE dbo.my_proc 10, 20, 30;-- All parameters supplied
GO
Conjunto de resultados.
10 20 30
EXECUTE dbo.my_proc @second = 500; -- Only second parameter supplied by name
GO
Conjunto de resultados.
NULL 500 3
EXECUTE dbo.my_proc 40, @third = 50 -- Only first and third parameters
-- are supplied.
Conjunto de resultados.
40 2 50
Consulte também