CREATE TEMP-TABLE statement

Creates a TEMP-TABLE dynamically at run time. The TEMP-TABLE that is created is empty and must be defined using ADD/CREATE methods.

Syntax

CREATE TEMP-TABLE handle
  [ IN WIDGET-POOL widget-pool-name ]
handle
A variable of type HANDLE that represents the handle of the TEMP-TABLE object.
IN WIDGET-POOL widget-pool-name
An expression of type CHARACTER that evaluates, at run time, to the name of the widget pool that contains the dynamic TEMP-TABLE.
Note: Widget pool names are not case-sensitive.

Note

You can collect run-time statistics about usage of temp-tables in an ABL session. For more information on collecting statistics for temp-table usage, see OpenEdge Development: Debugging and Troubleshooting.

Example

The following example creates a TEMP-TABLE like the Order table and populates it from the Order table. In addition, the corresponding SalesRep name is added from the SalesRep table, as shown:

r-cretmpt.p

DEFINE VARIABLE tth          AS HANDLE NO-UNDO.
DEFINE VARIABLE bh           AS HANDLE NO-UNDO.
DEFINE VARIABLE qh           AS HANDLE NO-UNDO.
DEFINE VARIABLE buf-ord-hndl AS HANDLE NO-UNDO.
DEFINE VARIABLE buf-rep-hndl AS HANDLE NO-UNDO.
DEFINE VARIABLE fld1         AS HANDLE NO-UNDO.
DEFINE VARIABLE fld2         AS HANDLE NO-UNDO.

/* Get database table handles */
buf-ord-hndl = BUFFER Order:HANDLE.
buf-rep-hndl = BUFFER SalesRep:HANDLE.

/* Create an empty, undefined TEMP-TABLE */
CREATE TEMP-TABLE tth.
/* Give it Order table's fields & indexes */
tth:CREATE-LIKE(buf-ord-hndl).
/* Add field like SalesRep.RepName */
tth:ADD-LIKE-FIELD("RepName","SalesRep.RepName").
/* No more fields will be added */
tth:TEMP-TABLE-PREPARE("ordx").

/* Get the buffer handle for the temp-table */
bh = tth:DEFAULT-BUFFER-HANDLE.

/* Populate the temp-table from order */
FOR EACH Order NO-LOCK:
  bh:BUFFER-CREATE.
  bh:BUFFER-COPY(buf-ord-hndl).
  /* Add the corresponding salesrep name */
  FIND SalesRep NO-LOCK WHERE SalesRep.SalesRep = Order.SalesRep NO-ERROR.
  IF AVAILABLE SalesRep THEN
    bh:BUFFER-COPY(buf-rep-hndl,?,"RepName,repname").
END. 

/* Run a query to access the TEMP-TABLE */
CREATE QUERY qh.
qh:SET-BUFFERS(bh).
qh:QUERY-PREPARE("FOR EACH ordx WHERE ordx.OrderNum < 50 BY ordx.RepName").
qh:QUERY-OPEN().

fld1 = bh:BUFFER-FIELD("OrderNum").
fld2 = bh:BUFFER-FIELD("RepName").

/* Display the order number and the salesrep name */
REPEAT:
  qh:GET-NEXT().
  IF qh:QUERY-OFF-END THEN LEAVE.
  DISPLAY fld1:BUFFER-VALUE() FORMAT "X(10)".
  DISPLAY fld2:BUFFER-VALUE() FORMAT "X(20)".
END.

qh:QUERY-CLOSE().
bh:BUFFER-RELEASE().
DELETE OBJECT tth.
DELETE OBJECT qh.

Notes

See also

DEFINE TEMP-TABLE statement, TEMP-TABLE-PREPARE( ) method