Parâmetros de Entrada em Stored Procedures no SQL Server
Podemos passar valores para um procedimento armazenado usando parâmetros de entrada, de forma similar à que passamos valores para funções em programação.
Sintaxe
CREATE | ALTER PROCEDURE nome_procdimento (@parametro AS tipo_dado) AS Declarações SQL;
Exemplos
Vamos criar um procedimento de nome sp_livro_valor que receberá um parâmetro de entrada, que chamaremos de @ID, do tipo smallint. Esse parâmetro será o valor do id do livro passado à cláusula WHERE da consulta:
CREATE PROCEDURE sp_livro_valor (@ID SMALLINT) AS SELECT Nome_Livro as Livro, Preco_Livro AS Preço FROM tbl_livros WHERE ID_Livro = @ID;
Testando:
EXEC sp_livro_valor 104;
Usar Múltiplos parâmetros de entrada
Podemos passar vários parâmetros para uma procedure durante sua execução. Vejamos um exemplo:
CREATE PROCEDURE sp_teste ( @par1 AS int, @par2 AS varchar(20) ) AS SELECT @par1 AS 'Parâmetro 01', @par2 AS 'Parâmetro 02';
Executar passando os parâmetros
Podemos executar a procedure passando os parâmetros de duas formas:
- Por posição – passando os valores na ordem em que os parâmetros foram declarados
- Por nome – indicando o nome do parâmetro que irá receber cada valor; neste caso, a ordem não importa.
Vamos testar:
EXEC sp_teste 22, 'Laranja'; --por posição EXEC sp_teste @par2 = 'Abacate', @par1 = 25; --por nome
Outro exemplo com múltiplos parâmetros de entrada
Vejamos outro exemplo de procedimento armazenado que recebe mais de um parâmetro de entrada:
ALTER PROCEDURE sp_LivroValor (@ID SMALLINT, @Preco MONEY) AS SELECT Nome_Livro as Livro, Preco_Livro AS Preço FROM tbl_Livros WHERE ID_Livro > @ID AND Preco_Livro > @Preco;
Executando:
EXEC sp_LivroValor @ID = 103, @Preco = 45;
Mais um exemplo
Desejo fornecer o ID e a quantidade de um título adquirido, e saber o valor total pago pelos livros.
ALTER PROCEDURE sp_LivroValor ( @Quantidade SMALLINT, @ID SMALLINT ) AS SELECT Nome_Livro as Livro, Preco_Livro * @Quantidade AS Preço FROM tbl_Livros WHERE ID_Livro = @ID;
Executando:
EXEC sp_LivroValor @ID = 103, @Quantidade = 10;
Exemplo com inserção de registro
CREATE PROCEDURE sp_insere_editora ( @nome VARCHAR (50) ) AS INSERT INTO tbl_editoras (Nome_Editora) VALUES (@nome);
–Execução e verificação:
EXEC sp_insere_editora @nome = 'Mc Graw Hill'; SELECT * FROM tbl_editoras;
Anterior: Como criar e executar procedimentos armazenados no SQL Server
Próximo: Parâmetros de Saída e declaração RETURN em procedimentos armazenados