Executar SP em modelo Multicamadas
Eaí galera...
Seguinte: Estou desenvolvendo uma aplicação em 3 camadas, e preciso saber como faço para executar uma StoredProcedure através de uma aplicação cliente. A stored procedure está no servidor de aplicação. Estou usando dbexpress + Firebird.
Se alguém puder me ajudar, ficarei muito grato.
Marcelo
Seguinte: Estou desenvolvendo uma aplicação em 3 camadas, e preciso saber como faço para executar uma StoredProcedure através de uma aplicação cliente. A stored procedure está no servidor de aplicação. Estou usando dbexpress + Firebird.
Se alguém puder me ajudar, ficarei muito grato.
Marcelo
Tchelllo
Curtidas 0
Respostas
Emerson Nascimento
05/07/2005
como solução mais rápida, crie um método no servidor com os parêmetros necessários e faça esse método disparar a stored procedure. na sua aplicação cliente vc chama o método.
GOSTEI 0
Tchelllo
05/07/2005
Obrigado pela atenção emerson.en, mas minha SP retorna parâmetros. Como faço para retorná-los para a aplicação cliente ?
GOSTEI 0
Emerson Nascimento
05/07/2005
retorna parâmetros ou retorna um resultset? se retornar parâmetros simples, faça como em qualquer outro método. se for um resultset, devolva para o cliente como um OleVariant.
GOSTEI 0
Tchelllo
05/07/2005
são parâmetros mesmo, mas são vários. Nesse caso, como faço?...tentei criar um record e retornar os parâmetros à ele, mas no cliente não consegui acessá-los, e se for por OleVariant, tem como receber vários parâmetros ?
GOSTEI 0
Emerson Nascimento
05/07/2005
sim. vc cria o record da maneira usual.
type
TRetornoDaFuncao = record
{...}
end;
mas sua função DEVE retornar um OleVariant.
o resultado da sua função será algo como:
var
Retorno: TRetornoDaFuncao;
{abre a sp e pega o valores}
Retorno.X := ....;
Retorno.Y := ....;
{devolve os valores para quem chamou o método}
Result := RecordQueVcCriou;
na sua aplicação cliente, vc cria uma variável do mesmo tipo daquela:
var
Resultado: TRetornoDafuncao;
Resultado := conexao.appserver.seumetodo(bla,bla,bla);
type
TRetornoDaFuncao = record
{...}
end;
mas sua função DEVE retornar um OleVariant.
o resultado da sua função será algo como:
var
Retorno: TRetornoDaFuncao;
{abre a sp e pega o valores}
Retorno.X := ....;
Retorno.Y := ....;
{devolve os valores para quem chamou o método}
Result := RecordQueVcCriou;
na sua aplicação cliente, vc cria uma variável do mesmo tipo daquela:
var
Resultado: TRetornoDafuncao;
Resultado := conexao.appserver.seumetodo(bla,bla,bla);
GOSTEI 0