GARANTIR DESCONTO

Fórum Executar Stored Procedure no Delphi 2009 + Firebird 2.1 #383485

12/08/2010

0

Boa tarde!

Estou com problemas para executar stored procedures no delphi 2009 com firebird 2.1.

Tenho a seguinte tabela criada no banco:

Create Table CURSOS (
    CodCur Integer NOT NULL,
    SigCur  Varchar(5) NOT NULL,
    DesCur Varchar(45) NOT NULL
);
Alter Table CURSOS add Constraint pk_CURSOS Primary Key (CodCur);


Também tenho a seguinte procedure criada no banco:

CREATE  PROCEDURE IAE_CURSOS (

  nCodCur Integer,
  nSigCur Varchar(5),
  nDesCur Varchar(45),
  nOpcCur Varchar(1))

as

BEGIN  

    IF (nOpcCur = 'I') THEN

        INSERT INTO CURSOS(CODCUR, SIGCUR, DESCUR) VALUES (:nCODCUR, :nSIGCUR, :nDESCUR);

    IF(nOpcCur = 'A') THEN

        UPDATE CURSOS SET SIGCUR = :nSIGCUR, DESCUR = :nDESCUR WHERE CODCUR = :nCODCUR;


    IF(nOpcCur = 'D') THEN

        DELETE FROM CURSOS WHERE CODCUR = :nCODCUR;
        

END ;


No meu projeto Delphi, tenho um DataModule que contem um TSQLConnection (DBAcesso) utilizando o driver para firebird TBODBXFB e um TSQLStoredProc(ssp) devidamente configrados.

No código do meu botão INCLUIR tenho:

var
  Tran : TDBXTransaction;
begin
  inherited;
  try
    Tran := DM.SQLAcesso.BeginTransaction;
    DM.ssp.Close;
    DM.ssp.ParamByName('nCODCUR').Value := edtCURCodigo.Text;
    DM.ssp.ParamByName('nSIGCUR').Value := edtCURSigla.Text;
    DM.ssp.ParamByName('nDESCUR').Value := edtCURDescricao.Text;
    DM.ssp.ParamByName('nOPCCUR').Value := 'I';
    DM.ssp.ExecProc;
    DM.SQLAcesso.CommitFreeAndNil(Tran);
     Application.MessageBox('Operação realizada com sucesso!', 'AVISO!',
        MB_APPLMODAL + MB_ICONINFORMATION + MB_OK + MB_DEFBUTTON1);
  except
      DM.SQLAcesso.RollbackFreeAndNil(Tran);
      Application.MessageBox('Um erro aconteceu operação cancelada!', 'ERRO!',
        MB_APPLMODAL + MB_ICONEXCLAMATION + MB_OK+MB_DEFBUTTON1);
  end;
end;


Sempre que executo a aplicação e tento inserir alguma informação, vai direto para a parte do EXCEPT.

Se executo a procedure direto pelo banco, funciona!

O que poderia estar errado ?

Obrigado.
Nilson Rapcinski

Nilson Rapcinski

Responder

Posts

15/08/2010

Carlos Mazzi

Se vc depurar linha  a linha, .. os parametros estao sendo populados corretamente?
Responder

Gostei + 0

16/08/2010

Nilson Rapcinski

Sim, pois utilizei o mesmo código no Delphi 7 e funcionou.

Também baixei uma versão do Delphi 2010 e funciona.
Responder

Gostei + 0

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

Aceitar