2012-02-20 7 views

答えて

1

動的にテンポラリテーブルを作成したため、少なくとも私の知る限り、EXPORT文を使用することはできません。あなたが行うことができるものは、最初にフィールド名とテーブルのフィールド値を動的に出力します。そうですね:

DEFINE VARIABLE hQuery AS HANDLE NO-UNDO. 
DEFINE VARIABLE ttH  AS HANDLE NO-UNDO. 

/* Define a new output stream */ 
DEFINE STREAM s1. 
OUTPUT stream s1 to "myCSV.csv". 

/* Create a query for the contents of your temp-table */ 
CREATE QUERY hQuery. 
/* Important: we need to use the temp-tables default buffer handle, 
/* not the hBuffer handle to the original table! */ 
hQuery:SET-BUFFERS (ttH:DEFAULT-BUFFER-HANDLE). 
/* Use the name you created before for the FOR EACH clause */ 
hQuery:QUERY-PREPARE("FOR EACH tmytable"). 
hQuery:QUERY-OPEN(). 
hQuery:GET-FIRST(). 

/* Write out the names of the fields as header in the first row */ 
DEFINE VARIABLE i AS INTEGER NO-UNDO. 
DO i = 1 TO ttH:DEFAULT-BUFFER-HANDLE:NUM-FIELDS: 
    PUT STREAM s1 UNFORMATTED ttH:DEFAULT-BUFFER-HANDLE:buffer-field(i):name + ",". 
END. 
PUT STREAM s1 UNFORMATTED SKIP. 

/* Walk through the query and output each field seperately. */ 
REPEAT: 
    hQuery:GET-NEXT(). 
    IF hQuery:QUERY-OFF-END THEN LEAVE. 

    DO i = 1 TO ttH:DEFAULT-BUFFER-HANDLE:NUM-FIELDS: 
     PUT STREAM s1 UNFORMATTED ttH:DEFAULT-BUFFER-HANDLE:buffer-field(i):buffer-value ",". 
    END. 
    PUT STREAM s1 UNFORMATTED SKIP. 
END. 

OUTPUT stream s1 close. 

大量のテーブルエントリでは機能しないことに注意してください。

+0

エクステントを持つフィールドでは、これを考慮する必要があるため、この機能は動作しません。 –

+0

しかし、うまくいけば、フィールドを最初に配列として定義するほど馬鹿だとは思わない;) –

+0

この問題では必ずしも選択肢を得ることはできない。 –

1

エクステント処理構文については、Progress KB P4410を参照してください。 QUERY-PREPAREの前にクエリにFORWARD-ONLY = TRUEを追加して、パフォーマンスを向上させることもできます。

+0

返信ありがとうございます。そのリンクは他の疑問にも役立ちます... –

関連する問題