Bill
Bill

Reputation: 1247

command to find the number of entries in a temp table

What is the command to find the number of entries/rows in a temp table? version 10.2b

Upvotes: 4

Views: 7118

Answers (3)

Gabriel Hautclocq
Gabriel Hautclocq

Reputation: 3320

Here's mine, that works for any temp-table :

FUNCTION TT_NBREC RETURNS INTEGER ( INPUT pr_hd_temptable AS HANDLE ) :

    DEFINE VARIABLE in_nbrec  AS INTEGER   NO-UNDO INITIAL 0.
    DEFINE VARIABLE hd_buffer AS HANDLE    NO-UNDO.
    DEFINE VARIABLE hd_query  AS HANDLE    NO-UNDO.
    DEFINE VARIABLE ch_query  AS CHARACTER NO-UNDO.
    DEFINE VARIABLE ch_table  AS CHARACTER NO-UNDO.
    DEFINE VARIABLE lg_error  AS LOGICAL   NO-UNDO.

    ASSIGN
        ch_table = pr_hd_temptable:NAME
        ch_query = "FOR EACH " + ch_table + " NO-LOCK".
    CREATE BUFFER hd_buffer FOR TABLE ch_table.
    CREATE QUERY  hd_query.
    hd_query:ADD-BUFFER( hd_buffer ).
    lg_error = hd_query:QUERY-PREPARE( ch_query ) NO-ERROR.
    hd_query:QUERY-OPEN().
    hd_query:GET-FIRST().
    DO WHILE NOT hd_query:QUERY-OFF-END :
        ASSIGN in_nbrec = in_nbrec + 1.
        hd_query:GET-NEXT().
    END.
    hd_query:QUERY-CLOSE().
    DELETE OBJECT hd_query.
    DELETE OBJECT hd_buffer.
    ASSIGN
        hd_query  = ?
        hd_buffer = ?.

    RETURN in_nbrec.
END FUNCTION.

Just pass it the handle of your temp-table and you get the number of records. It can certainly be improved, but it works fast enough for me.

Upvotes: 0

Tom Bascom
Tom Bascom

Reputation: 14020

/* create a temp-table so that we can test this technique
 */

define temp-table ttTest
  field id as int
.

create ttTest.
id = 1.
create ttTest.
id = 2.

/* how many records?
 */

define query q for ttTest cache 0.
open query q preselect each ttTest.
display num-results( "q" ).

Upvotes: 4

firhang
firhang

Reputation: 254

or you can use clasic FOR EACH:

DEFINE VARIABLE iCount AS INT NO-UNDO.

FOR EACH ttTest:
  iCount = iCount + 1.
END.

DISPLAY iCount.

Upvotes: 1

Related Questions