Após alguma ausência derivado a diversos acontecimentos profissionais , já reparam que o Blog mudou de nome em virtude do registo do dominio www.ITTechBuZ.com e novo logo.
Este logo transmite a comunicação como grande vertente pilar nas tecnologias de informação com o mundo empresárial e entre todos. Este Blog continua em 2009 a principalmente a publicar para técnicos. Hoje Domingo aproveito para deixar mais um apontamento da rubrica SQL Truques & Dicas com uma SP com um cursor.
Esta sp é para usar para actualizar consumo de horas numa aplicação
--
-- Cria a SP com o nome sp_actualiza_onsite
--
create procedure [dbo].[sp_actualiza_onsite]
as Begin
--
-- Insere Ticket depois de Fechado (Estado 'Closed')
-- Uso um Insert a partir de um Select
--
INSERT INTO [HEAT].[dbo].[Tickets] ([CallId] ,[CallType] ,[CriData] ,[Valor] ,[Saldo] ,[UIDMANUT])
select d.callid,c.calltype,c.closeddate, d.horas_gastas, d.horas_saldo
,d.uidmanut,c.custid
from detail d
inner join calllog c on c.callid=d.callid
inner join subset s on s.callid=c.callid
inner join config cfg on cfg.u_idreg=d.uidmanut
where (c.calltype='Onsite' or c.calltype='Packs') and c.callstatus='Closed' and c.actualiza<>'SIM'
and c.callid not in (select callid from tickets )
--
-- Actualiza contratos com as Horas Gastas
-- Cursor usado para update
--
-- Declaração do Cursor com o nome de cursor_Tickets
-- Select aonde vai correr o cursor
DECLARE Cursor_tickets CURSOR for
SELECT t.CallId,c.custid,t.Valor,t.UIDMANUT
from tickets t
inner join calllog c on c.callid=t.callid
where t.[CallType]='Onsite' and c.actualiza <>'SIM'
--
-- Declaração de Variaveis para passar do Cursor
--
Declare @Callid varchar(8)
declare @custid varchar(50)
declare @valor decimal(17,2)
declare @uidmanut varchar(25)
set @callid=''
set @custid=''
set @valor=0
set @uidmanut=''
Open Cursor_tickets /* abrir o cursor */
fetch next from Cursor_tickets
into @callid,@custid,@valor,@uidmanut
while @@fetch_Status=0
begin
--- Actualização das Horas Gastas
--- select @valor,@custid,@uidmanut (usado para verificação e teste)
update config set horas_gastas=isnull(@valor,0)+(isnull(horas_gastas,0)) ,horas_saldo=isnull(horas_saldo,0)-isnull(@valor,0)
where u_idreg=@uidmanut and custid=@custid
set @callid=''
set @custid=''
set @valor=0
set @uidmanut=''
fetch next from Cursor_Tickets
into @callid,@custid,@valor,@uidmanut
end
close Cursor_tickets
Deallocate Cursor_tickets
--
-- No Final actualiza a tabela de forma a não repetir os registos já processados
--
update calllog set actualiza='SIM' where callid in (select callid from tickets) and actualiza<>'SIM'
end
domingo, 18 de janeiro de 2009
Subscrever:
Enviar feedback (Atom)
NetWorkedBlog
tracer
Labels
- _uacct (1)
- Ano Novo (3)
- Bem vindo IT web 2.0 (1)
- Bill Gates (1)
- Birmânia (1)
- Business Objects (1)
- Crystal (2)
- Cursor (1)
- Database Triggers (2)
- Entretenimento (1)
- espaco em disco (1)
- Excel (1)
- férias (1)
- Google (2)
- Google Gphone (1)
- Google Pesquisa Personalizada (1)
- informática (1)
- It Tech Blogers (2)
- LOG (1)
- Movel (1)
- MSSQL (1)
- Natal (3)
- Newsletter (1)
- OPEN ID (1)
- Rootkits (1)
- segurança (1)
- software Grátis (1)
- SP (2)
- SQL (14)
- SQL Expressions (3)
- SQL Identity (1)
- SQL Truques e Dicas (13)
- TI (1)
- UAC (1)
- Urchin (1)
- Virtualização (1)
- Vista (4)
- VISTA Ecrã Preto (2)
- Vista SP1 (3)
- VM (1)
- web 2 (4)
- Web Analytics (5)
- web Office Online (1)
- WhilePrintingRecords (1)
- Windows Filesystem (1)
- windows vista (4)
Sem comentários:
Enviar um comentário