VIPS estão na tabela MEMB_INFO
Colunas PADRÕES, mas na MEMB_INFO.
VIP DateBegin
DateEnd
DateEndInteger
O script está todo comentado, se tiver um mínimo de conhecimento e paciência para ler, saberá como usar. Código:
-- SCRIPT CRIADO POR -- RENATO VALER -- 19/11/2012 -- 01:00 AM /* DECLARANDO VARIÁVEIS */ DECLARE @TEMPO_VIP int; -- NÃO MEXA AQUI DECLARE @VIP_TOTAL int; -- NÃO MEXA AQUI DECLARE @BONUS_VIP int; -- NÃO MEXA AQUI DECLARE @LOGINS varchar(12); -- NÃO MEXA AQUI /* DEFININDO DIAS DE VIP A SER DADO COMO BÔNUS */ SET @BONUS_VIP = 2; -- VALOR DE VIP A SER DADO COMO BÔNUS /* DECLARANDO CURSOR DE CONTAS FREE */ DECLARE C_FREE CURSOR FOR -- NÃO MEXA AQUI /* SELECIONANDO LOGINS DAS CONTAS FREE */ SELECT memb___id FROM [dbo].[Memb_Info] WHERE VIP = 0 -- NÃO MEXA AQUI /* INICIANDO CURSOR DE CONTAS FREE */ OPEN C_FREE; -- NÃO MEXA AQUI FETCH NEXT FROM C_FREE INTO @LOGINS -- NÃO MEXA AQUI WHILE(@@FETCH_STATUS = 0)BEGIN -- NÃO MEXA AQUI /* ATUALIZANDO DATA DE INÍCIO DO VIP */ UPDATE [dbo].[MEMB_INFO] SET [dateBegin] = DATEDIFF(s, '19700101', GETDATE()) WHERE [memb___id] = @LOGINS -- NÃO MEXA AQUI /* ATUALIZANDO DATA DE FIM DO VIP */ UPDATE [dbo].[MEMB_INFO] SET [dateEnd] = DATEDIFF(s, '19700101', GETDATE() + @BONUS_VIP) WHERE [memb___id] = @LOGINS -- NÃO MEXA AQUI /* ATUALIZANDO DATA DE FIM DO VIP EM NÚMEROS INTEIROS */ UPDATE [dbo].[MEMB_INFO] SET [dateEndInteger] = @BONUS_VIP WHERE [memb___id] = @LOGINS -- NÃO MEXA AQUI /* FINALIZANDO CURSOR DE CONTAS FREE */ FETCH NEXT FROM C_FREE INTO @LOGINS; -- NÃO MEXA AQUI END; -- NÃO MEXA AQUI CLOSE C_FREE; -- NÃO MEXA AQUI DEALLOCATE C_FREE; -- NÃO MEXA AQUI DECLARE C_VIP CURSOR FOR -- NÃO MEXA AQUI /* LISTANDO LOGINS VIP */ SELECT memb___id FROM [dbo].[Memb_Info] WHERE VIP > 0 -- NÃO MEXA AQUI OPEN C_VIP; -- NÃO MEXA AQUI FETCH NEXT FROM C_VIP INTO @LOGINS -- NÃO MEXA AQUI WHILE(@@FETCH_STATUS = 0)BEGIN -- NÃO MEXA AQUI /* SELECIONANDO TEMPO VIP RESTANTE DE CADA LOGIN */ SET @TEMPO_VIP = (SELECT DATEDIFF(day, GETDATE(), DATEADD(s, CAST([dateend] as int), '19700101')) -- NÃO MEXA AQUI as [diasRestantes] FROM [dbo].[MEMB_INFO] WHERE [memb___id] = @LOGINS); -- NÃO MEXA AQUI /* EXECUTANDO CÁLCULO */ SET @VIP_TOTAL = @TEMPO_VIP+@BONUS_VIP; -- NÃO MEXA AQUI /* ATUALIZANDO DATA DE FIM DO VIP */ UPDATE [dbo].[MEMB_INFO] SET [dateEnd] = DATEDIFF(s, '19700101', GETDATE() + @VIP_TOTAL) WHERE [memb___id] = @LOGINS -- NÃO MEXA AQUI /* ATUALIZANDO DATA DE FIM DO VIP EM NÚMEROS INTEIROS */ UPDATE [dbo].[MEMB_INFO] SET [dateEndInteger] = [dateEndInteger]+@VIP_TOTAL WHERE [memb___id] = @LOGINS -- NÃO MEXA AQUI FETCH NEXT FROM C_VIP INTO @LOGINS; -- NÃO MEXA AQUI END; -- NÃO MEXA AQUI CLOSE C_VIP; -- NÃO MEXA AQUI DEALLOCATE C_VIP; -- NÃO MEXA AQUI /* FIM DO SCRIPT */
Nenhum comentário:
Postar um comentário