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!
novembro 13, 2009 às 5:45 pm
Tem gente q tem dom pra didatica… ótimo site! Parabéns
janeiro 9, 2010 às 11:46 pm
Parabéns pelo artigo, é muito bom ver pessoas que compartilham seus conhecimentos, ajudando assim outras pessoas.
junho 15, 2010 às 10:29 am
[…] https://sqlcomoumtodo.wordpress.com/2007/09/30/criando-procedures-sql/ […]
junho 27, 2010 às 8:03 pm
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!!!!!!!!!
julho 21, 2010 às 8:14 pm
valeu mesmo!
Post muito claro e objetivo
( y )
agosto 25, 2010 às 2:45 pm
Aproveite bastante seu artigo!!
Desde já agradeço aguardando os próximos!
Daiane Silva
setembro 22, 2010 às 2:53 pm
Parabéns pelo artigo, claro, direto e didático.
Obrigada!!
outubro 13, 2010 às 12:07 am
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 é.
março 17, 2011 às 7:20 pm
ele
agosto 8, 2011 às 1:42 pm
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
setembro 24, 2011 às 3:37 pm
Muito bom seu artigo
Obrigado
dezembro 18, 2011 às 3:49 am
Amei. mesmo Obrigada 🙂 Optimo artigo, continue assim.
agosto 17, 2012 às 6:23 am
Parabéns, seu artigo eh sucinto e fácil de entender.
Muito obrigado !!!
setembro 25, 2012 às 9:47 pm
Muito bom. Gostei do artigo, bastante resumido e acessível para entender.
outubro 19, 2012 às 7:19 pm
Cara estou gostando muito, é o melhor de todos que ja acessei, muito claro as explicações,
parabens!!!
novembro 3, 2012 às 7:08 pm
É provavelmente a explicação mais limpa, simples, objectiva e clara que já encontrei.
novembro 26, 2012 às 7:38 pm
Isso tudu vai cair na minha prova Hoje na Faculdade , e estudei por aqui éssas procedures mas usando Oracle , valeu!
maio 9, 2013 às 4:00 pm
Da pra chamar/invocar um procedure no select?
dezembro 3, 2013 às 3:04 pm
Quem dera minhas aulas fossem simples assim. Parabéns cara, ficou muito mais fácil de entender.
fevereiro 27, 2014 às 3:50 am
Muito bom cara! Parabens
maio 7, 2014 às 8:43 pm
muito bom …
setembro 10, 2014 às 5:57 am
I don’t usually comment but I gotta admit thanks for the post on this great one fddkcfgdkkad
abril 17, 2015 às 9:28 pm
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.
julho 21, 2015 às 8:30 pm
ÓTIMA EXPLICAÇÃO TODAS AS MINHAS DÚVIDAS DE UMA SEMANA ESCLARECIDAS EM 30 MINUTOS , PARABÉNNSS