2016-12-27 1 views
0

私はパラメータハンドラを上書きしようとしていますので、異なるスキーマを持つ別の一時テーブルを指しています。別の一時テーブルを指すように `TABLE-HANDLER`を編集してください

myProcedure.p

DEFINE TEMP-TABLE TT_RealTable NO-UNDO 
    BEFORE-TABLE TT_RealTableBefore 
    FIELD name AS CHAR 
. 

DEF INPUT-OUTPUT PARAM TABLE-HANDLE TH_NewTable. 

CREATE TT_RealTable. 
ASSIGN TT_RealTable.name = "Ben". 

CREATE TT_RealTable. 
ASSIGN TT_RealTable.name = "Harry". 

異なるスキーマおよび内容をランダムパラメータTEMP-TABLETH_NewTableポイント。私はをTT_RealTableで上書きします。私が設定しようとすると:

TH_NewTable = TEMP-TABLE TT_RealTable:HANDLE. 

プログラムはTT_RealTableのスキーマ/メタデータは、ハンドラのものと一致しないことを言って、実行時にクラッシュします。

私はTT_RealTable:HANDLEを指すようにハンドラを上書きし、出力として返しますか?

答えて

1

スキルがエラークレームと異なる場合、投稿の冒頭で、あなたがしたいことはできません。パラメータテーブルのハンドルが静的な一時テーブルからのものであると仮定すると、特定の定義を持つ一時テーブルバッファハンドルを渡すことはできません。そうでない場合でも、プロシージャをコールした後にバッファハンドルを使用してテンポラリテーブルを作成する必要があります。これは、パラメータが入出力されているので、私が思うところではありません。

スキーマが流動的であるテーブルで実際に作業したい場合は、動的な一時テーブルを読み込む必要があります。ヘルプでCREATE TEMP-TABLEステートメントを探し、例を読んでハンドルを取得し、返されたハンドルを使って一時テーブルを構築する方法を理解してください。ただし、作成や割り当てなど、通常の文を使用する能力は失われます。 BUFFER-FIELDとBUFFER-VALUEを参照し、代わりにCREATEメソッドを使用しなければなりません。それに慣れるまでに時間がかかるかもしれませんが、ロケット科学ではありません。

希望すると助かります!

+0

私は 'TH_NewTable:HANDLE:CREATE-LIKE(TEMP-TABLE TT_RealTable:CREATE).'を' CREATE TEMP-TABLE'のように使ってみました。成功なし。 – W0lfw00ds

+1

私はINPUT-OUTPUTを使用せずに単に 'INPUT TABLE-HANDLE'と' OUTPUT TABLE'に分けました。出力は常にわかりますが、入力はデータや行を含まない '空のテーブル'にすることができます。空のテーブルをハンドラとして渡して上書きし、塗りつぶしたテーブルを 'OUTPUT'として返します。 – W0lfw00ds

関連する問題