none
SQL Duvida RRS feed

  • Pergunta

  • Desenvolva um procedimento com o nome P_atualizar, que recebe o código do produto como parâmetro e atualize seu estoque a partir da tabela de movimentação:

    Ex: INSERT INTO Movimentacao VALUES ('S', 1000, 3);

    EXEC P_Atualizar 1000;

    Tem como alguém me abrir uma luz nessa questão?
    quinta-feira, 16 de junho de 2016 12:50

Respostas

  • Bom dia meu caro,

    Considerações:

    1. Trata-se de uma operação de atualização com base no código do produto.
    2. Como não sei quais são as colunas da tabela, pois a operação de inserção acima não deixa claro, considerei as colunas da tabela como: COLUMN1, COLUMN2, COLUMN3 e CODIGO_PRODUTO
    CREATE PROCEDURE P_Atualizar 
    	@CODIGO_PRODUTO INT
    AS 
    BEGIN 
    	UPDATE Movimentacao 
    		SET COLUMN1 = 1000, 
    		COLUMN2 = 3, 
    		COLUMN3 = 'S' 
    	WHERE 
    		CODIGO_PRODUTO = @CODIGO_PRODUTO
    END

    Para executar a procedure:

    DECLARE @CODIGO_PRODUTO INT = 1
    EXECUTE P_Atualizar @CODIGO_PRODUTO
    
    --ou
    
    EXECUTE P_Atualizar 2

    • Marcado como Resposta Thales F Quintas quinta-feira, 16 de junho de 2016 17:16
    quinta-feira, 16 de junho de 2016 13:38
  • Greabs,

    Veja este outro exemplo:

    USE MRP
    go
    
    --Criando a Stored Procedure P_SaldoInicial
    Create Procedure P_SaldoInicial @CodProduto SmallInt
     As
     Begin
    
     Set NoCount On
    
     Declare @SaldoEntrada Float,
                 @SaldoProdutosaida Float
    
      Set @SaldoEntrada=(Select Sum(Quantidade) from Estoque 
                                        Where CodProduto = @CodProduto 
    									And Movimentacao ='E')
      
      Set @SaldoProdutosaida=(Select Sum(Quantidade) from Estoque 
                                                 Where CodProduto = @CodProduto 
    											 And Movimentacao ='S')
    
      If (Select Count(CodProduto) From SaldoProdutos Where CodProduto = @CodProduto) = 0
    
       Begin
        Insert Into SaldoProdutos 
        Values(@CodProduto,(@SaldoEntrada-@SaldoProdutosaida))
     
       End
       Else
        Begin
    	 Update SaldoProdutos
    	 Set SaldoProduto = (@SaldoEntrada-@SaldoProdutosaida)
    	 Where CodProduto = @CodProduto
    	End
    
        Select Codigo, CodProduto, IsNull(SaldoProduto,0) from SaldoProdutos
        Where CodProduto = @CodProduto
    
    End
    
    Exec P_SaldoInicial 120
    
    
    
    
    --Executando a Stored Procedure P_AtualizarSaldoProdutos
    Exec P_AtualizarSaldoProdutos 1
    
    


    Pedro Antonio Galvao Junior [MVP | MCC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitario | SoroCodigos | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    • Marcado como Resposta Thales F Quintas quinta-feira, 16 de junho de 2016 17:16
    quinta-feira, 16 de junho de 2016 14:55

Todas as Respostas

  • Bom dia meu caro,

    Considerações:

    1. Trata-se de uma operação de atualização com base no código do produto.
    2. Como não sei quais são as colunas da tabela, pois a operação de inserção acima não deixa claro, considerei as colunas da tabela como: COLUMN1, COLUMN2, COLUMN3 e CODIGO_PRODUTO
    CREATE PROCEDURE P_Atualizar 
    	@CODIGO_PRODUTO INT
    AS 
    BEGIN 
    	UPDATE Movimentacao 
    		SET COLUMN1 = 1000, 
    		COLUMN2 = 3, 
    		COLUMN3 = 'S' 
    	WHERE 
    		CODIGO_PRODUTO = @CODIGO_PRODUTO
    END

    Para executar a procedure:

    DECLARE @CODIGO_PRODUTO INT = 1
    EXECUTE P_Atualizar @CODIGO_PRODUTO
    
    --ou
    
    EXECUTE P_Atualizar 2

    • Marcado como Resposta Thales F Quintas quinta-feira, 16 de junho de 2016 17:16
    quinta-feira, 16 de junho de 2016 13:38
  • Me ajudou aqui, consegui resolver. 

    Muito obrigado e um ótimo dia!!!

    Abraço!

    quinta-feira, 16 de junho de 2016 13:59
  • Greabs,

    Veja este outro exemplo:

    USE MRP
    go
    
    --Criando a Stored Procedure P_SaldoInicial
    Create Procedure P_SaldoInicial @CodProduto SmallInt
     As
     Begin
    
     Set NoCount On
    
     Declare @SaldoEntrada Float,
                 @SaldoProdutosaida Float
    
      Set @SaldoEntrada=(Select Sum(Quantidade) from Estoque 
                                        Where CodProduto = @CodProduto 
    									And Movimentacao ='E')
      
      Set @SaldoProdutosaida=(Select Sum(Quantidade) from Estoque 
                                                 Where CodProduto = @CodProduto 
    											 And Movimentacao ='S')
    
      If (Select Count(CodProduto) From SaldoProdutos Where CodProduto = @CodProduto) = 0
    
       Begin
        Insert Into SaldoProdutos 
        Values(@CodProduto,(@SaldoEntrada-@SaldoProdutosaida))
     
       End
       Else
        Begin
    	 Update SaldoProdutos
    	 Set SaldoProduto = (@SaldoEntrada-@SaldoProdutosaida)
    	 Where CodProduto = @CodProduto
    	End
    
        Select Codigo, CodProduto, IsNull(SaldoProduto,0) from SaldoProdutos
        Where CodProduto = @CodProduto
    
    End
    
    Exec P_SaldoInicial 120
    
    
    
    
    --Executando a Stored Procedure P_AtualizarSaldoProdutos
    Exec P_AtualizarSaldoProdutos 1
    
    


    Pedro Antonio Galvao Junior [MVP | MCC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitario | SoroCodigos | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    • Marcado como Resposta Thales F Quintas quinta-feira, 16 de junho de 2016 17:16
    quinta-feira, 16 de junho de 2016 14:55