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.