none
Retornar o valor atualizado da STOREPROCEDURE RRS feed

  • Pergunta

  • Ola, pessoal!

    Tenho uma storeprocedure para atualizar um registro numa tabela e preciso que ela retorne esse valor atualizado (incrementado) :

    /****** Object:  StoredProcedure [dbo].[uspPegaNovoValor]    Script Date: 05/29/2015 04:10:00 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    ALTER PROCEDURE [dbo].[uspPegaNovoValor]
    @NomeCadastro NVARCHAR(30),

    AS
    BEGIN

    UPDATE
    tbGuiaCadastro
    SET
    ValorAtual=ValorNovo,
    ValorNovo=ValorNovo +1
    WHERE
    NomeCadastro=@NomeCadastro


    END

    O valor do campo ValorAtual vai mudar como receber de volta esse valor?

    agradecido.

    sexta-feira, 29 de maio de 2015 07:13

Respostas

Todas as Respostas

  • Bom dia,

    Experimente mais ou menos dessa forma:

    ALTER PROCEDURE [dbo].[uspPegaNovoValor]
    @NomeCadastro NVARCHAR(30),
    @ValorAtual decimal(19,4) output
    
    AS
    BEGIN
    
    UPDATE
    tbGuiaCadastro
    SET
    @ValorAtual = ValorAtual = ValorNovo,
    ValorNovo=ValorNovo +1
    WHERE
    NomeCadastro=@NomeCadastro
    
    END

    Espero que ajude.


    Assinatura: http://www.imoveisemexposicao.com.br

    sexta-feira, 29 de maio de 2015 11:25
  • Deleted
    sexta-feira, 29 de maio de 2015 12:30
  • Se o que necessita é que o procedimento retorne o valor da coluna ValorNovo após o incremento, experimente o seguinte código:

    -- código 1
    ALTER PROCEDURE [dbo].[uspPegaNovoValor]
         @NomeCadastro NVARCHAR(30), @NovoValor int output
    as begin
    UPDATE tbGuiaCadastro
      set @NovoValor= ValorNovo= ValorNovo +1
      where NomeCadastro = @NomeCadastro;
    end;

    Altere a declaração do parâmetro @NovoValor para o mesmo tipo da coluna ValorNovo.

    Me parece que a coluna ValorAtual é inútil na tabela, se ela é sempre o valor anterior de ValorNovo...


        José Diz     Belo Horizonte, MG - Brasil
    (Se encontrou a solução nesta resposta, ou se o conteúdo foi útil, lembre-se de marcá-la)



    José Diz,

    Percebi que mesmo o @NovoValor sendo OUTPUT, eu tenho que passar ele com algum valor no meu codigo certo?

    tipo(passei um valor 0(zero):

    acessDadosSqlServer.AdicionarParametros("NomeCadastro", nomecadastro);
                    acessDadosSqlServer.AdicionarParametros("@Valor", 0);

                    int  chvAtendimento =Convert.ToInt16( acessDadosSqlServer.ExecutaManipulacao(CommandType.StoredProcedure, "uspPegaNovoValor"));

                    return chvAtendimento;

    Aí acrescentei um SELECT @NovoValor AS Retorno depois do Where. Ta funcionando.

    Muito Agradecido pela ajuda.

    sexta-feira, 29 de maio de 2015 18:55
  • Grato, 

    Acrescentei um SELECT no final pra retornar o parametro OUTPUT.

    Obrigado pela dica.

    sexta-feira, 29 de maio de 2015 18:56