Fazer uma PerguntaFazer uma Pergunta
 

RespondidoSelect com Update na Procedure ???

  • terça-feira, 3 de novembro de 2009 19:15Apostolo Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     

    Olá galera tenho um procedure q se chama sp_pagina e nela eu tenho um select e um update so q quando eu chamo ela no meu codigo vb.net ela so funciona o select e ñ faz o update.
    Se eu der um execute sp_pagina '4' ai sim ela da o select com o update.
    O que pode esta acontecendo alguem pode me dar uma ajudar?
    Segue logo abaixo a minha query.

    IF @@s_setorpagina = '4' 
      Begin
        select b.id_banner,
               b.Nome_Banner,
               b.Arq_Banner,
               b.Url_banner,
               bc.dt_final,
               bc.id_sit,
               bc.views,
               b.id_ext,
               bc.id_col
        from   con.dbo.tb_banner b  WITH (NOLOCK)
        inner join con.dbo.tb_banner_coluna bc  WITH (NOLOCK)
           on b.id_banner = bc.id_banner
         inner join con.dbo.tb_extensao e WITH (NOLOCK)
           on b.id_ext = e.id_ext
        where bc.id_sit = 1
          and bc.dt_final >getdate()
        order by newid()

       update con.dbo.tb_banner_coluna
       set views = isnull(bc.views,0) + 1
        from   con.dbo.tb_banner b  WITH (NOLOCK)
        inner join con.dbo.tb_banner_coluna bc  WITH (NOLOCK)
           on b.id_banner = bc.id_banner
         inner join con.dbo.tb_extensao e WITH (NOLOCK)
           on b.id_ext = e.id_ext
        where bc.id_sit = 1
          and bc.dt_final >getdate() ]
      end 

    Fiquem com Deus!


    Só Deus Salva O resto Faz BACKUP

Respostas

  • terça-feira, 3 de novembro de 2009 19:18kauebranco Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     Respondido

    O Update está dentro do IF junto com o SELECT.

    Era isso mesmo que você queria fazer ?

    Você precisa mesmo passar o '4' na frente da Proc, pq ela espera esse parâmetro. Se você não passar o '4' ela nunca vai entrar nesse IF
    e nunca executar o UPDATE.

    Talvez o ideal seria utilizar um IF exclusivo para o Select(com valor '1' por exemplo) e um IF exclusivo para o UPDATE(com valor '2').

    Ou além disso tudo, pelo menos coloque o UPDATE antes do SELECT.

    • Marcado como RespostaApostolo terça-feira, 3 de novembro de 2009 19:54
    •  

Todas as Respostas

  • terça-feira, 3 de novembro de 2009 19:18kauebranco Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     Respondido

    O Update está dentro do IF junto com o SELECT.

    Era isso mesmo que você queria fazer ?

    Você precisa mesmo passar o '4' na frente da Proc, pq ela espera esse parâmetro. Se você não passar o '4' ela nunca vai entrar nesse IF
    e nunca executar o UPDATE.

    Talvez o ideal seria utilizar um IF exclusivo para o Select(com valor '1' por exemplo) e um IF exclusivo para o UPDATE(com valor '2').

    Ou além disso tudo, pelo menos coloque o UPDATE antes do SELECT.

    • Marcado como RespostaApostolo terça-feira, 3 de novembro de 2009 19:54
    •  
  • terça-feira, 3 de novembro de 2009 19:53Thiago Dorneles Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     
    Ola Apostolo,

    Fiquei na duvida do porque do SELECT antes do update, qual a finalidade disso?

    Pois quando você executa um SELECT ele funciona como um return para a aplicação, ou seja, ignora abaixo.

    O que você deseja fazer?


    Atenciosamente

    Thiago Dorneles
  • terça-feira, 3 de novembro de 2009 19:54Apostolo Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     
    Olá muito obrigado pela dica, eu acho q eu ñ estou conseguindo passar o parametro para a variavel de entrada da procedure, estou fazendo da seguinte maneira:

     

    Dim connBanner As New System.Data.SqlClient.SqlConnection

     

    Dim cmdBanner As New System.Data.SqlClient.SqlCommand

     

    Dim drBanner As Data.SqlClient.SqlDataReader

    connBanner.ConnectionString = _

     

    "Data Source=....."

    cmdBanner.Connection = connBanner

    cmdBanner.CommandText =

    "SP_PRIMEIRA_PAGINA"

    cmdBanner.CommandType = Data.CommandType.StoredProcedure

    cmdBanner.Parameters.Clear()

    cmdBanner.Parameters.Add(

    New System.Data.SqlClient.SqlParameter("@@s_setorpagina ", Data.SqlDbType.Int)).Value = "4"

    Mais parece q ñ esta passando alguem pode me ajudar?

    Fiquem com Deus!


    Só Deus Salva O resto Faz BACKUP
  • terça-feira, 3 de novembro de 2009 20:10kauebranco Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     
    Tente:

    cmdBanner.Parameters.AddWithValue("@@s_setorpagina ", "4")
  • terça-feira, 3 de novembro de 2009 20:19Apostolo Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     
    Tb Ñ deu tem como eu imprimir este valor q eu estou passando para a variavel la na procedure?
    Só Deus Salva O resto Faz BACKUP
  • terça-feira, 3 de novembro de 2009 20:20kauebranco Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     
    Como não deu certo ? o que aconteceu ?

    Mostra a Procedure.