从临时表创建数据库表(通过代码)

pik*_*ikk 2 progress-4gl openedge

我有一个名为 tt 的临时表。我想使用我的临时表创建一个具有相同字段名称和类型的数据库表。

我不知道在Progress-4gl 中该怎么做。这可能吗 ?

谢谢。

Ste*_*sen 5

简短回答:是的

最安全的方法是通过代码来做到这一点是创建一个增量 df 然后加载它。这是一个非常部分的开始,应该可以帮助您前进:

DEFINE TEMP-TABLE tt NO-UNDO
   FIELD ii AS INT
   FIELD cc AS CHAR
INDEX ttix IS UNIQUE PRIMARY ii.

DEF VAR hb     AS HANDLE NO-UNDO.
DEF VAR hf     AS HANDLE NO-UNDO.
DEF VAR ifield AS INT NO-UNDO.

hb = TEMP-TABLE tt:DEFAULT-BUFFER-HANDLE.

OUTPUT TO "tt.df".

PUT UNFORMATTED SUBSTITUTE( "ADD TABLE &1", QUOTER( hb:NAME ) ) SKIP.

DO  ifield = 1 TO hb:NUM-FIELDS:

   hf = hb:BUFFER-FIELD( ifield ).

   PUT UNFORMATTED 
      SUBSTITUTE( 
         "ADD FIELD &1 OF &2 AS &3", 
         QUOTER( hf:NAME ), 
         QUOTER( hb:NAME ), 
         hf:DATA-TYPE 
      ) SKIP.

   /* to do: add other field attributes like label, initial value, decimals, format */

END.         

/* to do: add indices */

OUTPUT CLOSE.
Run Code Online (Sandbox Code Playgroud)

生成的 df 可以加载:

RUN prodict/load_df.p ( "tt.df" ).
Run Code Online (Sandbox Code Playgroud)