Usuário com melhor resposta
Retornar o valor atualizado da STOREPROCEDURE

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
ENDO valor do campo ValorAtual vai mudar como receber de volta esse valor?
agradecido.
Respostas
-
Deleted
- Marcado como Resposta Sebastiao Freitas sexta-feira, 29 de maio de 2015 20:07
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
-
Deleted
- Marcado como Resposta Sebastiao Freitas sexta-feira, 29 de maio de 2015 20:07
-
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.
-