Retorno de Stored Procedure
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.
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
Curtidas 0
Respostas
Fabricio_saldanha
24/12/2003
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.
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.
GOSTEI 0
Marcelo.l
24/12/2003
Deu Certo.
Valeu!!!
Valeu!!!
GOSTEI 0