BCB: от BDE до dbexpress, исключение BCD - PullRequest
2 голосов
/ 12 января 2011

У меня возникла проблема с TSQLStoredProcedure.Вот код:

storedproc->ParamByName("A")->AsInteger = adataset->FieldByName("AA")->AsInteger;
storedproc->ExecProc();

параметр «A» объявляется целым числом в форме (а в программе - 29).Также хранимая процедура не имеет ошибок.Я в этом уверен.База данных Oracle 11g.Между прочим, при выполнении storeproc возникла исключительная ситуация:

... 
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.Так что теперь я вызываю свой pl / sql хранимый процесс с помощью TSQLQuery.Я использую «AsString» для передачи значений в параметры.Weird.Как dbexpress типы карт?Заранее спасибо.

...