私の魅力のように動作します。あなたはまたにより-REF一時テーブルを渡すことができ
ROUTINE-LEVEL ON ERROR UNDO, THROW.
USING Test.TTOO.* FROM PROPATH.
DEFINE VARIABLE oWrapper AS TempTableWrapper NO-UNDO .
{Test/TTOO/ttCustomer.i}
/* *************************** Main Block *************************** */
CREATE ttCustomer.
ASSIGN ttCustomer.CustNum = 42
ttCustomer.Name = "It works" .
oWrapper = NEW TempTableWrapper(TABLE ttCustomer) .
:
CLASS Test.TTOO.TempTableWrapper:
{Test/TTOO/ttCustomer.i}
CONSTRUCTOR PUBLIC TempTableWrapper (TABLE ttCustomer):
FOR EACH ttCustomer:
DISPLAY ttCustomer.CustNum ttCustomer.Name .
END.
END CONSTRUCTOR.
END CLASS.
と、発信者
oWrapper = NEW TempTableWrapper(TABLE ttCustomer BY-REFERENCE) .
をしかし、その後、一時テーブルのデータは、中availalbeですBY-REFERENCEとしてのコンストラクタは、呼び出しの間だけ呼び出し先のtemp-tableを「オーバーラップ」します。
永続的な「BY-REFERENCE」の場合は、呼び出しとパラメータにBINDキーワードを使用します。この場合、呼び出し先は一時表をREFERENCE-ONLYとして定義する必要があります。
メモ:インクルードファイル内に一時テーブルを定義する必要はありません(少なくとも私は推奨しますが)。実行時およびコンパイル時に、スキーマは一致する必要があります。
コンパイラが呼び出しを気に入らない場合は、クラスr-codeを削除して再コンパイルします。
あなたは.iを変更しました。コンパイラのキャッシュは、呼び出し元のプログラムとクラスの2つの異なるバージョンを使用しています。そのため、コンパイルエラーが発生します。 –
いくつかのコードを投稿できますか?あなたのアイデアはかなり実現可能なようです。彼らが同じであると知っているということはどういう意味ですか?静的な場合は、常に同じです。あるいは私は何かを誤解していますか? – bupereira