Subject Re: Problems with Firebird 1.0 and Dialect 3
Author stevenggibb
Helen,

The variable was already string, not an integer. In any case I tried
changing the ParamByName('EMPLOYEE').Value to ParamByName
('EMPLOYEE').AsString but the results were the same. I also removed
the SUSPEND from the stored procedure. Again the problem is the same.

Steven

--- In ib-support@y..., Helen Borrie <helebor@t...> wrote:
> At 05:02 PM 10-09-02 +0000, you wrote:
> >I previously posted this message in the IBObjects group and
received a
> >couple suggestions but they appeared to have no effect on solving
the
> >problem. Below is one example of the type of error I am getting,
and
> >the Delphi and stored procedure code.
> >
> >I am using IOBjects 3.6 and Delphi 5 Enterprise.
> >
> >The database server is Firebird 1.0.
> >
> >In delphi code and stored procedures code that has been stable for
> >several months I am getting an errors in stored procedures. It
> >happened when I changed the Dialect from 1 to 3. If I change it
back
> >to Dialect 1, the problems go away.
> >
> >I want to move the database to Dialect 3 but I can't figure out the
> >source of this error. I have tried rebuilding the database form
> >scratch but the results were the same.
> >
> >Has anyone else found that stored procedures work in Dialect 1 and
> >failed in Dialect 3. If not, then it must be something in my code.
> >
> >Can anyone suggest where to look or a solution?
> >
> >
> >*******The stored procedure code*************
> >
> >CREATE PROCEDURE DELETECONTACTTEMP (
> > EMPLOYEE CHAR (6))
> >AS
> >BEGIN
> > DELETE FROM CONTACTTEMP WHERE EmpID = :EMPLOYEE;
> > SUSPEND;
> >END
> >
> >*******The delphi code*************
> >
> >with DM_StoredProc.spDelContactTmp do
> > begin
> > // insertcontactlabeldata
> > DatabaseName := gsDataBaseName;
> > StoredProcName := 'deletecontacttemp';
> > Prepare;
> > ParamByName('EMPLOYEE').Value := gsEmpID;
> > try
> > ExecProc;
> > except
> > on E: Exception do
> > MessageDlg(rsErrMsg2, mtWarning, [mbOK], 0);
> > end;
> > UnPrepare;
> > end;
> >
> >*******The error message*************
> >
> >ISC ERROR CODE:33544569
> >
> >ISC ERROR MESSAGE:
> >Dynamic SQL Error
> >parameter mismatch for procedure DELETECONTACTTEMP
>
> The difference will have to do with the fact that Dialect 3 doesn't
do
> implicit casting of integer to string and vice versa. Is your
gsEmpID
> variable an integer? If so, cast it as string before you use it as
an
> input to your proc,
>
> viz.
>
> ParamByName('EMPLOYEE').AsString := IntToString(gsEmpID);
>
> Also, take out the SUSPEND statement. It doesn't belong here.
>
> heLen