Retorno de Stored Procedure

24/12/2003

0

Olá,

Estou começando com SQL-Server 7 e estou apanhando em alguns detalhes.

Tenho em meu banco de dados uma tabela que possui
um único campo (Val_Atual tipo Integer) com um único registro.

Preciso fazer uma procedure que incremente o valor deste campo e que me retorne o valor depois de atualizado.

Incrementar o valor já está funcionando mas não consigo pegar o valor atualizado no programa.

Esta é a proc que eu fiz.

CREATE PROCEDURE [RETORNA_VAL_ATUAL] AS
SET ROWCOUNT 1

if (Select Count(*) From NRO_ATUAL) = 0
GOTO INCLUIR

/*
** INCREMENTA EM 1 O VALOR DO CAMPO ´VAL_ATUAL´
*/
begin transaction

UPDATE NRO_ATUAL SET VAL_ATUAL = VAL_ATUAL + 1

commit

GOTO FIM

INCLUIR:

/*
** CRIA UM NOVO REGISTRO SE NÃO EXISTIR NENHUM
*/
begin transaction
INSERT INTO NRO_ATUAL (VAL_ATUAL) VALUES (1)

commit

FIM:
Select VAL_ATUAL From NRO_ATUAL


Estou usando ADO para conexão com ADOStoreProc para interface com a procedure.

Se puderem me ajudar...

Agradeço a todos.


Marcelo.l

Marcelo.l

Responder

Posts

29/12/2003

Fabricio_saldanha

Marcelo,

primeiro evite utilizar estruturas tipo goto.
tente utilizar o codigo abaixo:

CREATE PROCEDURE RETORNA_VAL_ATUAL
@Val_Atual int output
AS
begin
set nocount on
if (Select Count(*) From NRO_ATUAL) > 0
begin
begin transaction
UPDATE NRO_ATUAL
SET VAL_ATUAL = VAL_ATUAL + 1
commit
end
else
begin
begin transaction
INSERT INTO NRO_ATUAL (VAL_ATUAL) VALUES (1)
commit
end
select @Val_Atual = VAL_ATUAL
From NRO_ATUAL
set nocount off
end

no delphi quando definir os parametros do objeto TAdoStoreProc defina o parametro como sendo output, execute a procedure e depois leia o valor deste parametro que será o valor do registro Val_Atual da tabela NRO_ATUAL

Espero que funcione.


Responder

29/12/2003

Marcelo.l

Deu Certo.

Valeu!!!


Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar