Procedures (T-SQL)


 

É importante recurso, são conjuntos de intruções T-SQL executadas dentro de um único plano de execução, e que parecem bem com linguagens de programação. Eles podem melhorar a performance e criam mecanismos de segurança nos dados do banco de dados, como a procedure é armazenada dentro do banco de dados, ela executada rapidamente.

Considerando a forma como o SQL Server é utilizado no dia-a-dia em muitas organizações, é possível afirmar que grande parte do desenvolvimento em T-SQL gira em torno da construção de stored procedures. Muitas destas rotinas são implementadas com o intuito de produzir resultados dinâmicos, empregando para isto uma consulta SQL simples ou até agrupamentos mais complexos de instruções (podendo envolver neste caso uma série de cálculos ou, mesmo, junções de dados provenientes de diferentes fontes).

Procedimentos armazenados (Procedures) são semelhantes a procedimentos em outras linguagens de programação no sentido de que podem:

  • Aceitar parâmetros de entrada e retornar vários valores no formulário de parâmetros de saída para o procedimento de chamada ou lote.
  • Conter instruções de programação que executam operações no banco de dados, inclusive chamar outros procedimentos.
  • Retornar um valor de status a um procedimento de chamada ou lote para indicar êxito ou falha (e o motivo da falha).

Irei criar uma procedure que consulta o modelo, ano e cor da marca de todos os carros da tabela dbo.Carros , ordenando pelo ano dele em forma descrescente.

Imagem 1.
Screenshot_31

  1. Proc de SELECT
CREATE PROCEDURE sp_carro_marcas
@Marca VARCHAR(64)
AS
SELECT
[Modelo],
[Ano],
[Cor]
FROM
[dbo].[Carros]
WHERE
Marca LIKE '%' + @Marca + '%'
ORDER BY
Ano
DESC

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.

2. Proc de INSERT

CREATE PROCEDURE sp_carros_inserir

@Marca VARCHAR(80),
@Modelo VARCHAR(80),
@Ano INT,
@Cor VARCHAR (50)
AS

INSERT INTO [dbo].[Carros]
(Marca,
Modelo,
Ano,
Cor)

VALUES (
@Marca,
@Modelo,
@Ano,
@Cor)

Os campos da tabela podem ser omitidos, contanto que os valores estejam na ordem dos campos.

Segue um exemplo de uma PROCEDURE que faz a alteração de alguns campos (Marca, Modelo, Ano, Cor)

3. Proc de UPDATE

CREATE PROCEDURE sp_carros_alterar
@IdCarro INT,
@Marca VARCHAR(80),
@Modelo VARCHAR(80),
@Ano INT,
@Cor VARCHAR (50)
AS
UPDATE
[dbo].[Carros]
SET
Marca = @Marca,
Modelo = @Modelo,
Ano = @Ano,
Cor = @Cor
WHERE
IdCarro = @IdCarro

A variável @IdCarro deve conter a chave primária para que a alteração seja única e eficiente.

Observe as 3 ‘proc’ criada no SQL Server

Imagem 2.
Screenshot_30

Para consultar o retorno da procedure execute o seguinte comando

EXECUTE sp_carro_marcas @Marca ='fiat'

Ou

EXECUTE sp_carro_marcas 'Fiat'

Screenshot_32
Imagem 3.



Escreva um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *