Array
(
)

Em 2 camadas funciona, em 3 não !!!!

Mascotepc
   - 22 nov 2005

O meu problema é pegar o retorno de um Stored Procedure que possui parametros de entrada e saída.

É o sequinte, minha aplicação é em três camadas, então não acesso o
componente SQLStoredProc diretamente, acesso ele através de um
CLientDataSet que acessa o DataSetProvider que por sua vez acesso o
SQLStoredProc.

Executo dessa maneira :

procedure TCAQ_FUNC001.bbtCalcular2Click(Sender: TObject);
var v_result : String;
begin
try
with dmCAQ2.cdsCAQfuncTeste do
begin
Close;
//Primeiro : atribuimos os valores ao parametro
dmCAQ2.cdsCAQfuncTeste.Params[0].Value := edtTexto.Text;
//Segundo: Solicitamos a abertura do ClienteDataSet
Open;
v_result := dmCAQ2.cdsCAQFuncTeste.Params[1].AsString;
end;
edtResultTexto.Text := v_result;
except
showMessage(´Problemas com o calculo da analise !´);
end;
end;


No Open do ClientDataSet da o sequinte erro : ´dbExpress Error : Invalid Parameter´

Quando testo em 2 camadas executando diretamene o componente
SQLStoredProc funciona.

Executo dessa maneira em 2 camdas :

procedure TForm1.Button1Click(Sender: TObject);
begin
try
with stpTeste do
begin
Params[0].AsString := edit1.Text;
ExecProc;
edit2.Text := Params[1].AsString;
end;
except
showMessage(´Erro´);
end;
end;

A Stored no Oracle está assim
CREATE PROCEDURE teste (v_texto IN VARCHAR2,
v_result_txt OUT VARCHAR2) AS
BEGIN
v_result_txt := ´Retorno: ´ || v_texto;
END;

Será que não consigo pegar o retorno via ClienteDataSet em 3 camadas ?


Titanius
   - 22 nov 2005

Já tentou dar um Fetch Params? e marcar o parametro como OutPut?


[]s


Mascotepc
   - 22 nov 2005

Fetch Params sim, agora quanto Marca como output, vc fala no próprio ClientDataSet ? Se for ja está como OutPut sim.


Titanius
   - 22 nov 2005

Verifica no CDS e la no Server tbm... se os dois estao como output.... aki comigo funciona assim...


Mascotepc
   - 22 nov 2005

Tanto no CDS do Cliente como no SQLStoredProc do servidor estão como OutPut ! Vc utiliza 3 Camdas ?


Titanius
   - 22 nov 2005

Pra falar a verdade eu já usei, porém quando meu projeto estava pronto começou dar muito problema, e não conseguia solucionar, pois não se acha documentacao farta na net... por este motivo agora faço 3 camadas usando Asta.. os problemas que eu tinha nao tenho mais... :D


[]s