Estou desenvolvendo um sistema de gerenciamento de licenças de funcionários e
Minha estrutura de tabela com dados é:
+-----------+---------+----------+----------+------------+--------------+
| EmpID | CL | PL | ISActive | LastUpdate | NextUpdate |
+-----------+---------+----------+----------+------------+--------------+
| E001 | 5 | 3 | 1 | 2015-01-01 | 2015-02-01 |
+-----------+---------+----------+----------+------------+--------------+
| E002 | 3 | 7 | 1 | 2015-01-01 | 2015-02-01 |
+-----------+---------+----------+----------+------------+--------------+
| E003 | 0 | 1 | 1 | 2015-01-01 | 2015-02-01 |
+-----------+---------+----------+----------+------------+--------------+
| E004 | 5 | 1 | 0 | 2015-01-01 | 2015-02-01 |
+-----------+---------+----------+----------+------------+--------------+
Quero que todo funcionário ativo receba 2 CL
no primeiro dia de cada mês e 1 SL
a cada 45 dias automaticamente. Disseram-me que é possível fazer isso usando um cursor
, mas não sei.
Existe alguma outra maneira eficiente de fazer isso?
Não acho que um cursor seja uma boa solução para isso, pois teria que funcionar 24 horas por dia, 7 dias por semana e você precisaria verificar se estava funcionando. Uma solução melhor seria ter um trabalho do SQL Agent executado à meia-noite todas as noites. O trabalho do Agente chamaria um procedimento armazenado que verifica o
IsActive
sinalizador,LastUpdate
campo eNextUpdate
campo para cada funcionário e então incrementa os valores mencionados para cada funcionário.O procedimento armazenado pode enviar um e-mail após cada execução para mostrar quantos registros foram atualizados. Ele também pode incorporar o tratamento de erros para alertá-lo se houver uma falha por algum motivo. Dessa forma, você pode ter certeza de que o processo está sendo executado corretamente.
Também concordo com @James Anderson que você teria que usar o SQL Agent para obter melhores resultados.
Se você não sabe como configurar um trabalho SQL, consulte este link para sua referência sobre como definir um trabalho SQL.
Vamos fazer com o trabalho no agente SQL é mais fácil.