Array
(
)

Stored Procedure com DBExpress

Hcnc
   - 13 ago 2004

Olá Pessoal,
Estou começando a utilizar o componente DBExpress com Oracle. Alguém poderia me informar como faço a chamada de uma Stored Procedure? Pois estou utilizando o TSimplesDataset.

PERIODO.Close;
PERIODO.Params.ParamByName(´parperiodo´).AsString:=EDIT_PERIODO.Text;
PERIODO.Params.ParamByName(´parexercicio´).AsString:=EDIT_EXERCICIO.Text;
PERIODO.Params.ParamByName(´paremp´).AsString:=EDIT_EMPRESA.Text;
PERIODO.Params.ParamByName(´pardatainicial´).AsDate:=DataInicial.Date;
PERIODO.Params.ParamByName(´pardatafim´).AsDate:=DataFim.Date;
PERIODO.Execute;

Assim, apresenta um erro ´Cursor not returned from query´.


Welington
   - 13 ago 2004

Ao invés do comando ´Execute´, use ExecProc.

Nunca utizei o ParambyName, sempre usei o FindParam.

Ex.:

PERIODO.Params.FindParam(´parperiodo´).AsString:=EDIT_PERIODO.Text;

Mas este dois com certeza devem ter o mesmo desempenho.


Hcnc
   - 16 ago 2004

Caro Welington,
O componente TSimplesDataset do DBExpress não possui ExecProc. A sua chamada da procedure com banco Oracle foi com qual componente?


Hcnc
   - 16 ago 2004

Caro Welington,
O componente TSimplesDataset do DBExpress não possui ExecProc. A sua chamada da procedure com banco Oracle foi com qual componente?


Welington
   - 16 ago 2004

O componente que eu utilizo é o SQLStoredProc da paleta DBExpress. Uso ele com o banco de dados Firebird. Por que vc não tenta utilizar este componente??? Apesar do banco não ser o Oracle, a lógica de programação é a mesma.


Hcnc
   - 16 ago 2004

Oi Welington,
Já troquei de componente e com relação ao erro anterior era o parametro type do params do componente que estava ´PtInput´. Parametrizei para PtInputOutput e eliminei o erro. Mas, apresentou outro erro. Tenho cinco parametro (Periodo:ftString; Exercicio:ftString; Emp:ftBCD; Datainicial:fttimeStamp; Datafim:fttimeStamp), quando passo os parametros e executo ´ExecProc´ apresenta o arro de Action Violation at Adress. Vc já passou por um erro assim? Também tentei colocar os parametros todos ftString, mas não funcionou! Que acha?

Hugo


Welington
   - 16 ago 2004

Atribua os campos desta forma:

StoredProc.ParamByName(´Periodo´).Value := Edit1.Text;
StoredProc.ParamByName(´Exercicio´).Value := Edit2.Text;
StoredProc.ParamByName(´Emp´).Value := StrToFloat(Edit3.Text);
StoredProc.ParamByName(´DataInicial´).Value := StrToDateTime(Edit4.Text);
StoredProc.ParamByName(´DataFinal´).Value := StrToDateTime(Edit5.Text);

Verifique se os campos do formulário possuem a propriedade MaxLength maior do que os parâmetros na StoredProc.

Se não der certo envie a sua storedproc.

Tenho um exemplo de como usar StoredProc, mas com o Firebird. Se vc estiver interessado, envie uma mensagem particular passando o seu e-mail.