我对 TSQLStoredProcedure 有一些问题。这是代码:
storedproc->ParamByName("A")->AsInteger = adataset->FieldByName("AA")->AsInteger;
storedproc->ExecProc();
参数“A”以形式声明为整数(在程序中为 29)。存储过程也没有错误。我敢肯定。数据库是Oracle 11g。顺便说一句,执行存储过程时发生了异常:
...
EBcdException with message '<0000001:000000010000000:00000063612>' is not a valid BCD value
...
使用 BDE 一切正常,但现在使用 dbexpress,出现了这个问题。我在互联网上搜索了几天,但没有找到答案。
我提前谢谢你,请原谅我的英语。
弗朗切斯科
更新
我在网上搜索。我在以下位置发现了一些有趣的东西:
https://forums.codegear.com/thread.jspa?messageID=43223&tstart=0 http://www.delphigroups.info/2/8/750511.html
我决定做一些测试:
SQLQuery->ParamByName("f1")->AsString = Edit1->Text;
SQLQuery->ExecSQL();
有用。不一样的
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 如何映射类型?提前致谢。