Tutorial com exemplos de código T-SQL para executar uma stored procedure no SQL Server com um ou vários parâmetros de entrada.
Dependendo do código SQL Server, para executar procedimento armazenado com parâmetros devem ser fornecidos valores obrigatórios ou serão usados valores padrão. Primeiro, deve-se definir o valor NULL no código da procedure. Isso acontece porque criamos os parâmetros de forma obrigatória ou não obrigatória. Para parâmetros opcionais, podemos atribuir um valor padrão na declaração de criação da procedure no SQL. Assim, parâmetros opcionais não impedem a execução da procedure e a obtenção de um feedback potencial no SSMS.
1. Executar uma stored procedure no SQL Server com um parâmetro
Primeiramente, crie a procedure a ser chamada, ou certifique-se de que o alvo já está no banco de dados. Se não, execute o código abaixo, similar ao usado para criar a procedure uspGetCustomer deste tutorial. Nesta stored procedure, o único parâmetro de entrada é o ID do Cliente, sendo obrigatório. O objetivo da procedure é exibir todas as informações, ou seja, todas as colunas da tabela Clientes para o número de cliente dado como parâmetro. O exemplo da stored procedure com este script:
CREATE PROCEDURE uspGetCustomer @NoClient INT AS SELECT * FROM [dbo].[CLIENTS] WHERE [NOCLIENT] = @NoClient GO
Aqui está um exemplo simples de como executar uma stored procedure no MS SQL com um ou mais parâmetros como entrada. De fato, para passar as informações de entrada para o código SQL, execute este código e adapte esta sintaxe ao caso de negócio específico:
EXEC dbo.uspGetCustomer @NoClient = 1;
2. Executar uma stored procedure com vários parâmetros em T-SQL
Neste segundo caso, o ID do Cliente e a Cidade são usados como parâmetros. Nestes exemplos mais práticos, é claro que é possível usar apenas nomes e valores explícitos em vez de IDs técnicos.
-- Criar a mesma procedure com dois parâmetros e também valores padrão NULL CREATE PROCEDURE uspGetCustomer @ClientNumber int = NULL, @City nvarchar(20) = NULL AS SELECT * FROM [dbo].[CLIENTS] WHERE [ClientNumber] = @ClientNumber OR [City] = @City GO
Assim, para executar uma stored procedure codificada no SQL Server, simplesmente chame a procedure, com os parâmetros obrigatórios separados por valores, e na ordem correta, ou nomeados explicitamente, que é a maneira recomendada.
EXEC dbo.uspGetCustomer @ClientNumber = 2, @City = 'Casablanca';
De fato, no parágrafo anterior menciono o fato de que não é necessário chamar explicitamente os nomes das variáveis, podendo chamá-las desta forma:
EXEC dbo.uspGetCustomer 2, 'Casablanca';
3. A ordem é importante ao executar stored procedures em T-SQL
Mas neste caso, a ordem deve ser respeitada. Por exemplo, tente executar o código abaixo, ou seja, sem respeitar a ordem.
EXEC dbo.uspGetCustomer 'Casablanca', 2;
Você pode encontrar um erro do SQL Server como este, porque os tipos dos parâmetros não são os mesmos. E se ambos fossem inteiros, poderia ser pior, pois então o resultado seria falso.
Msg 8114, Level 16, State 1, Procedure dbo.uspGetCustomer, Line 0 [Batch Start Line 0]
Erro ao converter o tipo de dados varchar para int.
Uma sintaxe simples desde que os parâmetros e valores padrão sejam usados
Este é o fim do tutorial sobre como executar um procedimento armazenado com parâmetros usando a programação do SQL Server. Para aprofundar na jornada de aprendizado do SQL Server e T-SQL, este é um breve tutorial sobre como retornar valores com uma stored procedure usando a opção OUTPUT. De fato, stored procedures, ao contrário de funções SQL, nem sempre retornam um valor. Para retornar um valor com uma procedure no MS SQL, use a opção OUTPUT.
Seja o primeiro a comentar