pegar o retorno de um sp em sql server 2000 no delphi 7 com Componente da Paleta ADO

Delphi

30/12/2011

boa tarde a todos, gostaria de saber como faço para capturar uma variável de retorno de uma procedure no Banco de dados Sql Server 2000 com Delphi 7 e utilizando um componente da paleta ADO.

minha procedure está assim:

/*PROCEDURE PARA RETORNAR O ÚLTIMO REGISTRO INSERIDO NA TABELA VENDA1*/
create proc informaRegistro (@registro integer outPut)
as
set @registro = ident_current(venda1)
return @registro

Donilton Silva

Donilton Silva

Curtidas 0

Respostas

Vagner Almeida

Vagner Almeida

30/12/2011

Você vai tratar a SP como se fosse uma tabela.

Então você utiliza o componente QUERY do ADO e dá um select, assim

select * from NOME_DA_SP

Você PODE, trocar o * pelo nome do(s) campos que serão retornados, se quiser.

Faça um teste dando um select na ferramenta do SQL Server.

Espero ter ajudado

Abraços...

GOSTEI 0
Anizair Lopes

Anizair Lopes

30/12/2011

Qual componente ado você está utilizando ?

se for o AdoStoredProc você deve ter preenchido os parametros de sua procedure então para capturar o valor faça o seguinte

AdoStoredProc.Parameter[0].Value isso irá retornar o valor da sua variável que se encontra na stored procedure.
GOSTEI 0
Donilton Silva

Donilton Silva

30/12/2011

Wagner, dei um select em uma procedure teste que fiz:

create table venda
(
codigo integer identity(1,1)not null,
valor numeric(6,2) not null,
cliente varchar(60) not null,
primary key(codigo,cliente)
)


create proc codVenda (@id_venda integer output)
as
set @id_venda = (select ident_current(venda))
return @id_venda


insert into venda values (89,maria)


select * from codVenda

E ME RETORNOU ESTE ERRO:
Server: Msg 208, Level 16, State 3, Line 1
Invalid object name codVenda.

Se um de vocês puder me ajudar agradeço.
GOSTEI 0
Anizair Lopes

Anizair Lopes

30/12/2011

o problema é no seu select você criou a tabela como Venda e está tentando dar um select na tabela codvenda que não existe.
mude a linha do seu select onde estiver codvenda coloque Venda que deve resolver.
GOSTEI 0
Anizair Lopes

Anizair Lopes

30/12/2011

desculpe minha mensagem anterior está incorreta ...
o certo é você passar o id_venda dentro da procedure..

select * from codvenda(89) ou um codigo que existe na tabela, pois sua procedure está solicitando um parametro.
GOSTEI 0
POSTAR