Oracle BCB:从BDE到dbexpress,BCD异常

Oracle BCB:从BDE到dbexpress,BCD异常,oracle,porting,dbexpress,bde,Oracle,Porting,Dbexpress,Bde,我对TSQLStoredProcess有些问题。代码如下: storedproc->ParamByName("A")->AsInteger = adataset->FieldByName("AA")->AsInteger; storedproc->ExecProc(); 参数A在形式中声明为整数,在程序中为29。此外,存储过程没有错误。我敢肯定。数据库是oracle11g。顺便说一下,在执行storedproc时,发生了一个异常: ... EBcdExcepti

我对TSQLStoredProcess有些问题。代码如下:

storedproc->ParamByName("A")->AsInteger = adataset->FieldByName("AA")->AsInteger;
storedproc->ExecProc();
参数A在形式中声明为整数,在程序中为29。此外,存储过程没有错误。我敢肯定。数据库是oracle11g。顺便说一下,在执行storedproc时,发生了一个异常:

... 
EBcdException with message '<0000001:000000010000000:00000063612>' is not a valid BCD value
...
它起作用了。对我来说不一样

SQLQuery->ParamByName("f1")->AsInteger = StrToInt(Edit1->Text);       //ERROR DBX Error: Invalid Field Type.
SQLQuery->ParamByName("f1")->AsFloat = StrToFloat(Edit1->Text);      //ERROR DBX Error: Invalid Field Type.
SQLQuery->ParamByName("f1")->AsBCD = StrToInt(Edit1->Text);          //ERROR ORA-06502: PL/SQL: error: ... ORA-06512: at line 1.
SQLQuery->ParamByName("f1")->AsFMTBCD = StrToBcd(Edit2->Text); //ERROR ORA-06502: PL/SQL: error: ... ORA-06512: at line 1.
或者使用TSQLStoredProc。
现在我通过TSQLQuery调用pl/sql存储过程。我使用AsString将值传递给参数。奇怪的dbexpress如何表示映射类型?提前谢谢。

如果您想澄清,请编辑您的问题:我已将您的答案合并到您的问题中。答案应该是解决此问题的答案,而不是其他问题。如果您想提供澄清,请编辑您的问题:我已将您的答案合并到您的问题中。答案应该是解决这个问题的答案,而不是其他问题。
SQLQuery->ParamByName("f1")->AsInteger = StrToInt(Edit1->Text);       //ERROR DBX Error: Invalid Field Type.
SQLQuery->ParamByName("f1")->AsFloat = StrToFloat(Edit1->Text);      //ERROR DBX Error: Invalid Field Type.
SQLQuery->ParamByName("f1")->AsBCD = StrToInt(Edit1->Text);          //ERROR ORA-06502: PL/SQL: error: ... ORA-06512: at line 1.
SQLQuery->ParamByName("f1")->AsFMTBCD = StrToBcd(Edit2->Text); //ERROR ORA-06502: PL/SQL: error: ... ORA-06512: at line 1.