none
Criar job com condição if RRS feed

  • Pergunta

  • Bom dia senhores, preciso criar um job para efetuar o seguinte serviço:

    Tabela> Coluna>valor

    Memb_stat>Connectstat>0

    Cash>wcoin>100

    Cash>pendent>400

    -----

    A condição que preciso executar é a seguinte:

    "Se Connectstat (da tabela memb_stat)= '0' então Adiciona o na valor da coluna pendent(400)(da tabela Cash) na coluna wcoin (da tabela Cash)"  o resultado deve ser: Coluna wcoin da tabela Cash = 500.

    esta operação deve ser executada de 5 em 5 minutos

    porem não sei como implantar essa job.

    Alguem poderia me dar uma força? desde já eu agraço!

    terça-feira, 10 de setembro de 2013 11:21

Respostas

Todas as Respostas

  • JKaefer,

    Nao ficou claro para mim o que voce quer fazer, na verdade ao meu entendimento existem duas possibilidades de atualizacao, no final a coluna WCOIN recebe o valor quer dizer que e um UPDATE ou INSERT? E outra, Ele recebe 500 ou o valor que esta na coluna pendent?

    Todo caso, abaixo um scirpt que faz mais ou menos isso, dependendo de ajustes claro. Segue tambem um link do meu blog em relacao a criacao de JOBS no SQL Server, basta criar um e colocar seu schedule para execucao a cada 5 minutos: http://fabrizziocaputo.wordpress.com/2011/09/01/sql-server-basico-4-agendando-um-job-no-sql-server/

    IF((SELECT ConnectStat FROM memb_stat) = 0)
    BEGIN
    	UPDATE Cash
    	SET wcoin = 500--Ou pendent
    END


    <b>Fabrizzio A. Caputo</b><br/> Certificações:<br/> MCT<br/> MCC<br/> Oracle OCA 11g<br/> MCITP SQL Server 2008 BI<br/> MCITP SQL Server 2008 Implementation and Maintenance<br/> MCITP SQL Server 2008 Developer<br/> ITIL V3 Foundation <br/> Blog Pessoal: <a href="http://fabrizziocaputo.wordpress.com">www.fabrizziocaputo.wordpress.com</a><br/> Email: fabrizzio.antoniaci@gmail.com

    terça-feira, 10 de setembro de 2013 11:34
    Moderador
  • Bom dia Fabrizzio, obrigado por responder, vou dar mais detalhes da minha situação

    tenho a tabela CASH que possui 3 colunas, são elas "User,wcoin,pendent"

    e tenho a tabela memb_stat que possui 2 colunas, são elas "user,connectstat"

    agora vou dar um exemplo:

    User | wcoin | pendent  <-Cash

    Joao | 200 | 300

    Pedro | 150 | 150

    ----

    User | Connectstat <-memb_stat

    Joao | 1

    Pedro | 0

    -------

    quero fazer uma condição que consulte se o user "X" possui o Connectstar com o valor "0" e Insira o valor do campo pendent na coluna wcoin. 

    EX.: Joao possui o connectstat = 1 (então não inseri o valor da tabela pendent na wcoin)

    Ex2: Pedro possui o connectstat = 0 ( então inseri o valor da tabela pendent da wcoin no fim ficaria com o valor 300 na tabela wcoin e 0 na tabela pendent)

    Complicado né, rs 

    Se puder ajudar eu agradeço muito. Abraço!


    • Editado JKaefer terça-feira, 10 de setembro de 2013 11:51
    terça-feira, 10 de setembro de 2013 11:50
  • Parece que a intenção é adicionar esses 400 (pendent), ao valor já existente no campo wcoin.

    A questão é: a cada 5 minutos vc vai resetar pra 100 o wcoin? Ou vai sempre adicionar 400 ao wcoin?

    Exemplo:
    wcoin 100 + 400 (pendent)
    PASSA 5 MINUTOS
    wcoin 500 + 400 (pendent)
    PASSA 5 MINUTOS
    wcoin 900 + 400 (pendent)
    ...


    Leonardo D'Amato

    terça-feira, 10 de setembro de 2013 11:51
  • Jkaefer,

    Agora ferrou rs... Pendent e a tabela ou o campo? Pela modelagem entendi que e campo mas pelo texto que e tabela.

    Vamos la,

    Caso o campo connectstat da tabela memb_stat seja maior que 0, devo pegar, mapeando pelo usuario, o campo wcoin da tabela Cash e atualizar o campo Pendent, e isso?


    <b>Fabrizzio A. Caputo</b><br/> Certificações:<br/> MCT<br/> MCC<br/> Oracle OCA 11g<br/> MCITP SQL Server 2008 BI<br/> MCITP SQL Server 2008 Implementation and Maintenance<br/> MCITP SQL Server 2008 Developer<br/> ITIL V3 Foundation <br/> Blog Pessoal: <a href="http://fabrizziocaputo.wordpress.com">www.fabrizziocaputo.wordpress.com</a><br/> Email: fabrizzio.antoniaci@gmail.com

    terça-feira, 10 de setembro de 2013 11:53
    Moderador
  • Veja se é isso:

    Se Memb_stat.ConnectStat = 0
    Cash.wcoin recebe Cash.Pendent
    e Cash.Pendent recebe 0


    Leonardo D'Amato

    terça-feira, 10 de setembro de 2013 11:59
  • Fabrizzio e Leonardo, obrigado por responderem, pendente é campo da tabela cash.

    oque eu quero é fazer QUASE oque o Leonardo fez + exatamente oque você disse, porem após somar apenas 1x ele deleta o valor da coluna pendent então ficaria assim...

    Wcoin = 400 | pendent = 200

    PASSA 5 MINUTOS
    wcoin 400 + 200 (pendent)
    PASSA 5 MINUTOS
    wcoin 400 + 0 (pendent)

    PASSA 5 MINUTOS
    wcoin 400 + 100 (pendent)

    PASSA 5 MINUTOS
    wcoin 500 + 0 (pendent)

    Caso o campo connectstat da tabela memb_stat seja maior que 0, devo pegar, mapeando pelo usuario, o campo wcoin da tabela Cash e atualizar o campo Pendent, e isso? é isso! 

    Agradeço desde já a ajuda!


    • Editado JKaefer terça-feira, 10 de setembro de 2013 12:04
    terça-feira, 10 de setembro de 2013 12:03
  • Leonardo obrigado por responder, é exatamente isso só que com + que o Fabrizzio colocou (mapeando com a coluna user).

    muito obrigado!

    terça-feira, 10 de setembro de 2013 12:06
  • Senhores, Fiz uma "estrutura" com oque eu imagino que ficaria.

    Ex.:

    Se Memb_stat.ConnectStat = 0 
    Cash.wcoin recebe Cash.Pendent
    e Cash.Pendent recebe 0

    Where memb_stat.user = Cash.user.

    porem não sei exatamente como implantar isso no sql. Agradeço a ajuda desde já!

    terça-feira, 10 de setembro de 2013 12:50
  • JKaefer,

    Você pode agendar um Plano de manutenção com a função de executar uma instrução T-SQL, segue abaixo;

    1º Clique em Gerenciamento, depois botão direito encima do Plano de Manutenção e depois Novo Plano de Manutenção;

    Management / Maintenance Plans / New Maintenance Plans

    2º Nomeie seu Plano de Manutenção e depois aparecerá as ferramentas para criar um plano de manutenção, puxe o 'Tarefa Executar Instrução T-SQL para o centro da tela, 

    Execute T-SQL statement task


    3º Após selecionar a tarefa de execução, clique 2 vezes nela que aparecerá a tela para você informar a instrução que deseja, conforme EXEMPLO abaixo.

    4º Após informar a Instrução, você precisa agendar esse plano de manutenção, clique em Agenda do subplano e informe que dia da semana, que horas e etc... conforme imagem abaixo;

     Subplan Schedule / Job Schedule Properties



    []'s

    terça-feira, 10 de setembro de 2013 13:47
  • Fernando Obrigado, o problema é a condição if que eu teria que usar e o mapeamento por nome do usuario, Abraço e agradeço a todos pela ajuda!
    quarta-feira, 11 de setembro de 2013 01:50
  • Deleted
    • Marcado como Resposta JKaefer quinta-feira, 12 de setembro de 2013 04:40
    quarta-feira, 11 de setembro de 2013 12:28
  • José Diz, fico muito agradecido realmente aconteceu exatamente como eu queria, um abraço e sucesso!
    quinta-feira, 12 de setembro de 2013 04:41