none
Baixa em estoque com store procedure RRS feed

  • Pergunta

  •  

    Ola pessoal to tentando fazer uma baixa em estoque via stored procedure, porem n to consegindo fazer do jeito q to querendo. Deem uma olhada no código e me digam se tem como fazer isso funcinar:

    update produtos set qtd = qtd-ProdVendido.QtdPro

    where codprod in (Select CodPro,QtdPro from ProdVendido where ProdVendido.CodVen = @CodVenda)

     

    ele me da a seguinte mensagem de erro:

    Only one expression can be specified in the select list when the subquery is not introduced with EXISTS.

     

    Se puderem me ajudar agradeço desde ja.

    quarta-feira, 21 de novembro de 2007 11:39

Todas as Respostas

  • Sabino,

     

    O problema esta relacionado com a quantidade de linhas de retorno que a sua subquery esta retornando, por isso ele esta sugerindo utiizar o comando Exists.

    quarta-feira, 21 de novembro de 2007 12:46
  • Sim isso eu até entendi + n to conseguindo uma forma de usar o exists pra resolver esser problema, será q vc poderia da um exemplo?

    quarta-feira, 21 de novembro de 2007 13:00
  •  

    Bom dia Sabino

     

    declare @qtd float,

                @codigo int

     

    Select @codigo=CodPro,@Qtd = QtdPro From ProdVendido where CodVen = @CodVenda

    Update produtos set qtd = qtd-@qtd where codprod = @codigo

     

     

    Espero ter ajudado
    quarta-feira, 21 de novembro de 2007 13:07
  •  

    Olá,

     

    Assim deve funcionar:

     

    UPDATE p

    SET qtd = qtd-PV.QtdPro

    FROM produtos p

    INNER JOIN ProdVendido PV on p.codprod = PV.CodPro\

    WHERE PV.CodVen = @CodVenda

     

     

     

    Abraço
    quarta-feira, 21 de novembro de 2007 13:11
  •  

    Bom dia Sabino

     

    Declare @Quantidade Float,

                @Codigo int

     

    Select @Codigo = CodPro,@Quantidade = QtdPro From prodVendido Where CodVen = @CodVenda

     

     

    Update Produtos Set Qtd = @Quantidade Where CodProd = @Codigo

     

     

     

     

     

    Espero ter ajudado

    quarta-feira, 21 de novembro de 2007 13:42
  •  

    tente assim

     

    update produtos set qtd = qtd-ProdVendido.QtdPro
    from produtos inner join ProdVendido on ProdVendido.CodVen = @CodVenda and produtos.CodPro = ProdVendido.CodPro

     

    abs;

    quarta-feira, 21 de novembro de 2007 13:47
  •  

    veja se assim esta ok

     

    update produtos set qtd = qtd-ProdVendido.QtdPro
    from produtos inner join ProdVendido on produtos.Codprod = ProdVendido.codProd
    where ProdVendido.CodVen = @CodVenda

     

     

    quarta-feira, 21 de novembro de 2007 13:53
  • Sabino,

     

    Em a quantidade de linhas de retornos, deverá ser eliminada especificando uma condição para o registro desejado.

     

    Os colegas, postaram diversos exemplos, agora analise o qual poderá atender melhor a sua necessidade.

     

    quarta-feira, 21 de novembro de 2007 15:46
  • Oi,

     

    Dá prioridade para as soluções INNER JOIN.

    Capturar um valor pra uma variável e depois realizar um update é um risco enorme de inconsistência...

    Você pode ler e enquanto isso alguém pode ter atualizado o valor antes do update.

     

    Marcos,

     

    quarta-feira, 21 de novembro de 2007 21:54