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
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
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.