编辑`TABLE-HANDLER`指向另一个临时表

时间:2016-12-27 15:28:50

标签: progress-4gl openedge

我正在尝试覆盖参数处理程序,因此它指向另一个具有不同架构的临时表。

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".

TH_NewTable指向具有不同架构和内容的随机参数TEMP-TABLE。我想用TABLE-HANDLER覆盖此参数TT_RealTable。如果我尝试设置:

TH_NewTable = TEMP-TABLE TT_RealTable:HANDLE.

程序将在运行时崩溃,说TT_RealTable的架构/元数据与处理程序的架构/元数据不匹配。

如何覆盖处理程序以指向我的TT_RealTable:HANDLE,并将其作为输出返回?

1 个答案:

答案 0 :(得分:1)

如果架构因错误声明而异,并且您在帖子开头说过,那么您想要做的事情就无法完成。假设参数表句柄来自静态临时表,则无法传递具有特定定义的临时表缓冲区句柄并在过程结束时返回其他内容。即使它不是,你也需要在调用程序之后使用缓冲区句柄创建临时表,我认为这不是你想要的,因为你的参数是输入输出。

如果你真的想要使用一个流程图表,那么你应该阅读动态临时表。在帮助中查找CREATE TEMP-TABLE语句并阅读示例以了解如何获取句柄然后(并且然后)使用返回的句柄构建临时表,以便您可以使用它。但是,您失去了使用常规语句的能力,例如创建和分配。您必须引用BUFFER-FIELD和BUFFER-VALUE,并使用CREATE方法代替,使用缓冲区句柄。可能需要一段时间才能适应它,但它不是火箭科学。

希望它有所帮助!