Page 1 of 1

Use column type as the procedure parameter type

Posted: Wed 08 Aug 2012 19:21
by com2k
Problem: Oracle procedure parameter is always passed as 0 for certain data types.

We have many Oracle procedures that use table column type as the procedure parameter type. For example:

CREATE OR REPLACE PROCEDURE EvalEmpl(
pSNbr IN EmplTable.SNbr%TYPE,
...)

while EmplTable.SNbr is defined as NUMBER(4)


In sqlExpr.pas:

TSQLConnection.GetProcedureParams():
DataSet.FieldByName(LengthFieldName).Value is always 0 for this NUMBER(4) data type

As a result, in SetProcedureParams():
iFldType= fldINT32 for this parameter, but fldINT32 is not handled. Given ArgDesc.iLen=0, the parameter pSNbr is always set to 0 when calling EvalEmpl.

The problem happened after we upgraded to dbexpoda.dll ver 4.90.0.25. It did not happen in dbexpoda.dll ver 2.50.0.25.

Delphi version: Delphi 2005 w/update 2
dbEXpress: dbexpoda.dll ver. 4.90.0.25

Anyone knows how to fix this? Thanks.

Re: Use column type as the procedure parameter type

Posted: Thu 09 Aug 2012 11:34
by AlexP
hello,

Thank you for the information, we have reproduced the problem.
We will inform you when we solve this problem.

Re: Use column type as the procedure parameter type

Posted: Fri 10 Aug 2012 08:22
by com2k
Thanks.
AlexP wrote:hello,

Thank you for the information, we have reproduced the problem.
We will inform you when we solve this problem.

Re: Use column type as the procedure parameter type

Posted: Tue 04 Dec 2012 16:37
by mateixeira
Any news on this thread? Any workaround?

Re: Use column type as the procedure parameter type

Posted: Wed 05 Dec 2012 09:55
by AlexP
Hello,

We have already fixed the problem.
Please download the latest version of dbExpress driver for Oracle