Stored Procedure com DBExpress

13/08/2004

0

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´.


Hcnc

Hcnc

Responder

Posts

13/08/2004

Welington

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.


Responder

16/08/2004

Hcnc

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


Responder

16/08/2004

Hcnc

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


Responder

16/08/2004

Welington

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.


Responder

16/08/2004

Hcnc

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


Responder

16/08/2004

Welington

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.


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar