2

TSQLStoredProcedure に問題があります。コードは次のとおりです。

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

param "A" は、形式で整数として宣言されています (プログラムでは 29 です)。また、ストアド プロシージャにはエラーがありません。私はそれを確信しています。データベースは Oracle 11g です。ちなみに、storedproc を実行すると例外が発生しました。

... 
EBcdException with message '<0000001:000000010000000:00000063612>' is not a valid BCD value
...

BDE ではすべて正常に動作していましたが、dbexpress を使用すると、この問題が発生します。数日間インターネットで検索しましたが、答えが見つかりませんでした。

事前に感謝し、私の英語についてはご容赦ください。

フランチェスコ

アップデート

Webで検索しました。次の場所で興味深いものを見つけました。

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 はどのようにタイプをマップしますか? 前もって感謝します。

4

0 に答える 0