如何使用动态查询创建临时表

时间:2012-02-20 07:49:22

标签: progress-4gl openedge

CREATE QUERY ohQuery.
ohQuery:SET-BUFFERS(hBuffer).

OhQuery:QUERY-PREPARE("FOR EACH " + ip-tablename ).
ohQuery:QUERY-OPEN().
ohQuery:GET-FIRST().

ip-tablename = value from UI (combo box)

现在我需要为此查询创建一个临时表。如何创作?

如果我使用类似create的方法,我应该传递哪个值?

1 个答案:

答案 0 :(得分:2)

要在运行时动态创建临时表,您需要具有所述表的缓冲区的句柄或表名本身。看到你已经拥有'ip-tablename'缓冲区的句柄(我假设hBuffer是名为'ip-tablename'的表的缓冲区,否则你的上述语句将不起作用),你应该使用该句柄出于性能原因而不是'只是'表名。这是如何做到的:

DEF VAR ttH AS HANDLE NO-UNDO.
ttH:CREATE-LIKE(hBuffer).

或者,您也可以使用'ip-tablename'作为类似create的方法,尽管它的表现不佳:

ttH:CREATE-LIKE(ip-tablename).

在使用新的临时表之前,不要忘记你需要使用temp-table prepare方法:

ttH:TEMP-TABLE-PREPARE("myNewTempTable").

希望有所帮助!