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.

16 Respostas a “Criando procedures SQL”

  1. biano Diz:

    ótimo artigo, me ajudou muito!

  2. Luiz Reis Diz:

    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.

  3. André Sepini Diz:

    Otimo…

  4. Godrinelson Diz:

    Excelente artigo e ótima didática !!! Ajudou muito !!!

  5. Amanda Diz:

    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! ;-)

  6. Thiago Diz:

    Cara sem palavras ajudou muitoOOo!!!

    Valeussssss

  7. Cleber Diz:

    Fico feliz de ver pessoas interessadas de ensinar com tanta facilidade valeu mesmo..

  8. Glauber Franco Diz:

    gostaria de saber como faz uma consulta numa procedure utilizando php

  9. WILSON Diz:

    Muito bom, vc tem dom pra ensinar. Grande abraço ficou muito fácil entender.

  10. WILSON Diz:

    Excelente vc tem dom pra ensinar. Grande abraço ficou muito fácil entender.

  11. Luciano Diz:

    Parabens pela didatica, muito bacana seu site

  12. Ricardo Moraes Diz:

    Artigo muito bom para introdução a procedures e suas features, bem didático.

    Muito bom.

  13. Lipe Diz:

    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…

  14. Everton Diz:

    show de bola, agora sim aprendi de verdade!

  15. Rafael Diz:

    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

  16. Leon Diz:

    Muito útil! Parabéns kra!


Deixe uma resposta