Creates a TEMP-TABLE dynamically at run time. The TEMP-TABLE that is created is empty and must be defined using ADD/CREATE methods.
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.
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. |