Criando procedures SQL
Setembro 30, 2007
Uma maneira muito útil de fazer uma consulta em uma tabela é a utilização de PROCEDURES SQL. A criação e utilização desta instrução é simples, veja abaixo a sintaxe:
CREATE PROC[EDURE] nome_procedure
[
@parametro tipo_parametro [=valor_padrao]
]
AS
instrucao_SQL [...n]
Irei criar uma PROCEDURE que consulta todos os produtos da tabela ‘Produto’ ordenando pelo o valor do produto (Valor) em ordem decrescente.
CREATE PROCEDURE sp_produto_informar
AS
SELECT
Nome,
Descricao,
Valor
FROM
Produto
ORDER BY
Valor
DESC
A instrução ORDER BY ordena um determinado campo, porém prejudica fortemente a performance do servidor, portanto evite usar esta instrução (que muitas vezes é indispensável).
Agora adicionarei um parâmetro a consulta que será comparado no campo ‘Nome’ e o resultado também será ordenado pelo ‘Valor’ de forma decrescente.
CREATE PROCEDURE sp_produto_informar
@Nome VARCHAR(64)
AS
SELECT
Nome,
Descricao,
Valor
FROM
Produto
WHERE
Nome LIKE ‘%’ + @Nome + ‘%’
ORDER BY
Valor
DESC
Para executar esta PROCEDURE basta abrir MS SQL Server e executar o seguinte código:
EXECUTE sp_produto_informar ‘Refri’
ou
EXEC sp_produto_informar ‘Refri’
Esta consulta retornará todos os produtos cujo o nome comece com ‘Refri’ e ordená-los novamente pelo valor decrescente. Lembrando que SQL não é case-sensitive.
A partir desta sintaxe pode-se passar quantos parâmetros for necessário para fazer uma consulta mais precisa e se obter o resultado exato que se deseja. Muitos programadores utilizam a identificação daquele registro na tabela, que deve ser única, uma chave primária.
Uma PROCEDURE pode também fazer qualquer outra operação na base, como por exemplo: inserir, alterar e deletar algum registro. A instrução abaixo permite inserir algum registro na tabela através de uma PROCEDURE, passando os parâmetros necessários.
CREATE PROCEDURE sp_produto_inserir
@Nome VARCHAR(64),
@Descricao TEXT,
@Valor MONEY
AS
INSERT INTO
Produto(Nome, Descricao, Valor)
VALUES(
@Nome,
@Descricao,
@Valor
)
Os campos da tabela podem ser omitidos, contanto que os valores estejam na ordem dos campos.
Abaixo segue um exemplo de uma PROCEDURE que faz a alteração de alguns campos (Nome, Descricao e Valor):
CREATE PROCEDURE sp_produto_alterar
@ID BIGINT,
@Nome VARCHAR(64),
@Descricao TEXT,
@Valor MONEY
AS
UPDATE
Produto
SET
Nome = @Nome,
Descricao = @Descricao,
Valor = @Valor
WHERE
ID = @ID
Como havia dito, a variável @ID deve conter o chave primária para que a alteração seja única e eficiente.
Deixe suas críticas, comentários e/ou sugestões sobre o artigo. Até o próximo artigo.

Julho 10, 2008 às 12:35 pm
ótimo artigo, me ajudou muito!
Julho 23, 2008 às 12:37 pm
Gostei muito da maneira que são mostrado os exemplos. É muito fácil o entendimento de sua didática. Foi muito bom encontrar seu site.
Julho 29, 2008 às 2:11 pm
Otimo…
Julho 31, 2008 às 4:47 am
Excelente artigo e ótima didática !!! Ajudou muito !!!
Setembro 24, 2008 às 12:05 pm
Caro Alexandre, muito bom o artigo!! Muito obrigada, ele foi muito útil.
Você tem uma didaca muito legal.. Pelo menos foi o que transpareceu nessa matéria.
Parabéns! E valeu!
Outubro 23, 2008 às 7:45 pm
Cara sem palavras ajudou muitoOOo!!!
Valeussssss
Novembro 3, 2008 às 3:00 am
Fico feliz de ver pessoas interessadas de ensinar com tanta facilidade valeu mesmo..
Novembro 10, 2008 às 2:54 pm
gostaria de saber como faz uma consulta numa procedure utilizando php
Dezembro 2, 2008 às 2:48 pm
Muito bom, vc tem dom pra ensinar. Grande abraço ficou muito fácil entender.
Dezembro 2, 2008 às 2:51 pm
Excelente vc tem dom pra ensinar. Grande abraço ficou muito fácil entender.
Abril 14, 2009 às 1:24 am
Parabens pela didatica, muito bacana seu site
Junho 9, 2009 às 1:22 pm
Artigo muito bom para introdução a procedures e suas features, bem didático.
Muito bom.
Junho 29, 2009 às 7:47 pm
Cara, muito prático e eficaz este seu método de ensino de procedures. Para leigos como eu, ficou muito boa sua explicação…Tirou bem minha dúvida!!!
Agradeço…
Agosto 9, 2009 às 6:12 am
show de bola, agora sim aprendi de verdade!
Setembro 27, 2009 às 6:50 pm
Parabens Alexandre.
Seu artigo ficou muito bom.
Estava querendo saber como criar uma procedure no SQL e seu artigo me ajudou muito.
Parabéns.
Abraços
Rafael Gabriel
Outubro 8, 2009 às 6:27 pm
Muito útil! Parabéns kra!