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
