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.

40 Respostas to “Criando procedures SQL”

  1. biano Says:

    ótimo artigo, me ajudou muito!

  2. Luiz Reis Says:

    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 Says:

    Otimo…

  4. Godrinelson Says:

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

  5. Amanda Says:

    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 Says:

    Cara sem palavras ajudou muitoOOo!!!

    Valeussssss

  7. Cleber Says:

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

  8. Glauber Franco Says:

    gostaria de saber como faz uma consulta numa procedure utilizando php

  9. WILSON Says:

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

  10. WILSON Says:

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

  11. Luciano Says:

    Parabens pela didatica, muito bacana seu site

  12. Ricardo Moraes Says:

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

    Muito bom.

  13. Lipe Says:

    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 Says:

    show de bola, agora sim aprendi de verdade!

  15. Rafael Says:

    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 Says:

    Muito útil! Parabéns kra!

  17. Gabriel Says:

    Tem gente q tem dom pra didatica… ótimo site! Parabéns

  18. Izaias Says:

    Parabéns pelo artigo, é muito bom ver pessoas que compartilham seus conhecimentos, ajudando assim outras pessoas.

  19. joao paulo bussolo da rosa Says:

    realmente administraçao de banco de dados
    é uma coisa complexa e requer cuidado e pasciencia, pois os codigos de sao muito suceptiveis a erros.
    abraçao galera e otimo estudos!!!!!!!!!

  20. Ohrlando Says:

    valeu mesmo!
    Post muito claro e objetivo

    ( y )

  21. daiane silva Says:

    Aproveite bastante seu artigo!!
    Desde já agradeço aguardando os próximos!
    Daiane Silva

  22. Samantha Says:

    Parabéns pelo artigo, claro, direto e didático.
    Obrigada!!

  23. Gustavo Says:

    Você disse que SQL não é case-sensitive. No Linux, clientes, Clientes e CLIENTES são coisas distintas. Os comandos SQL de fato não são case-sensitive mas nomes de tabelas e colunas são. Mesmo assim, aconselho a colocar os comandos SQL sempre maiúsculos por questão de organização, assim se vê logo de cara o que é SQL e o que não é.

  24. Rosi Says:

    Bom dia,
    Tudo bem?

    Pode tirar algumas dúvidas?
    Quando eu passo parametros na procedure e no vb.net e quando eu não preciso passar
    Eu entendi que se eu quero que retorne algo especifico como todos os clientes de uma região eu coloco o nome da região que será um parametro passado e no código coloco ele também em quais outras situações eu passo ou não os parametros se puder também colocar algumas outras matérias sobre procedure.

    Obrigado

    Rosi

  25. Tiago Says:

    Muito bom seu artigo
    Obrigado

  26. Ana Says:

    Amei. mesmo Obrigada 🙂 Optimo artigo, continue assim.

  27. Pedro Says:

    Parabéns, seu artigo eh sucinto e fácil de entender.
    Muito obrigado !!!

  28. Cristiano Says:

    Muito bom. Gostei do artigo, bastante resumido e acessível para entender.

  29. Daniel Silva Says:

    Cara estou gostando muito, é o melhor de todos que ja acessei, muito claro as explicações,
    parabens!!!

  30. Waldemar Says:

    É provavelmente a explicação mais limpa, simples, objectiva e clara que já encontrei.

  31. Fabio Says:

    Isso tudu vai cair na minha prova Hoje na Faculdade , e estudei por aqui éssas procedures mas usando Oracle , valeu!


  32. Da pra chamar/invocar um procedure no select?

  33. Maysa Says:

    Quem dera minhas aulas fossem simples assim. Parabéns cara, ficou muito mais fácil de entender.

  34. kinho Says:

    Muito bom cara! Parabens

  35. Yasmin Says:

    muito bom …

  36. Johna139 Says:

    I don’t usually comment but I gotta admit thanks for the post on this great one fddkcfgdkkad

  37. juliana souza Says:

    olá, sou ex-aluna de banco de dados. Já fiz pelo menos dois cursos um voltado para sql e outro para oracle. Posso dizer q sei apenas montar select apesar de ter estudado tanto, mas isso, também tem a ver com a minha falta de práticar. Por isso, resolvi procurar por um site que me ensine o básico para tentar desenvolver aos poucos. Achei seu site, gostei muito e o recomendo para quem quer aprender com quem realmente tem didática para ensinar. Obrigada.

  38. Lucas Oliveira Says:

    ÓTIMA EXPLICAÇÃO TODAS AS MINHAS DÚVIDAS DE UMA SEMANA ESCLARECIDAS EM 30 MINUTOS , PARABÉNNSS


Deixar mensagem para Godrinelson Cancelar resposta