Olá Pessoal!

 

Mais um super rápido e útil artigo. Campos calculados no SQL Server 2000.

 

O recurso de campos calculados ou computados no SQL Server 2000 é extremamente útil em situações que são necessários muitos cálculos na aplicação, em stored procedures ou triggers. Através deste recurso é possível criar um cálculo na definição da tabela. Essa definição fica associada a qualquer operação de insert ou update. Os valores são atualizados nos campos calculados sem intervenção do usuário. Na verdade o campo criado através de um determinado cálculo não pode ser manipulado diretamente.

 

Imagine uma tabela que guarde prestações de serviços juntamente com os valores. A tabela precisa guardar também o valor do imposto iss retido para cada fornecedor. Para facilitar a visualização dos dados em relatórios futuros, criaremos também um campo contendo o valor líquido que será o cálculo do valor da prestação de serviço menos o valor do iss. Vamos ao exemplo.

 

Vejamos o cenário abaixo:

 

 

--Criação da tabela com a definição dos campos calculados

CREATE TABLE tb_fornecimento_servico

   (

    codigo                integer                   identity,

    fornecedor          varchar(100),

    serviço               varchar(100),

    valor_servico       decimal(12,2),        

    iss           as valor_servico * 0.05, --Cálculando o valor do ISS

    valor_liquido        as valor_servico - (valor_servico * 0.05),--valor líquido

    data_insercao      as getdate(),    --Setando default para a data de inserção

    usuario_insercao  as suser_sname()) --Setando default para o usuário que inseriu

 

alter table tb_fornecimento_servico

 add constraint pk_fornecimento_servico primary key(codigo)

go

 

--Inserindo apenas os dados do fornecedor, serviço e valor do serviço realizado

insert into tb_fornecimento_servico (fornecedor,serviço,valor_serviço)

  values ('João Souza','Pintura de Paredes',22400.00)

 

Código 1. Criação da tabela com os campos calculados

 

Vamos selecionar os dados da tabela tb_fornecimento_servico.

 

--Selecionando os dados da tb_fornecimento_servico

select * from tb_fornecimento_servico

 

Código 2. Atualizando o valor da prestação de serviço



29-01-07pic01.JPG 

Figura 1. Dados inseridos


Observem que os campos de iss e valor_liquido foram calculados automaticamente pelo SQL Server. Essa característica retira a carga de trabalho da aplicação que teria de realizar esses cálculos.

 

Realizaremos um update na tabela tb_fornecimento_servico para verificar a alteração dos valores dos campos de iss e valor_liquido.

 

--Atualizando o valor do serviço prestado

update tb_fornecimento_servico

  set valor_servico = 30000

 where codigo = 1

Código 3. Atualizando o valor da prestação de serviço

 

--Selecionando os dados da tb_fornecimento_servico

select * from tb_fornecimento_servico

Código 4. Atualizando o valor da prestação de serviço


29-01-07pic02.JPG
Figura 2. Dados atualizados


Os valores foram atualizados sem qualquer intervenção de usuário.

 

Conclusão

 

Os campos calculados podem ser usados para diminuir o trabalho das aplicações. São particularmente úteis em tabelas preparadas para serem utilizadas em relatórios. Aproveitem o recurso. Até o próximo artigo.