Home   Archive   Permalink



Finding size of SQL result

I have this program that extracts about 30,000 records out of an SQL Server database, and the operation is quick but not that quick, so I have the following procedure for reassuring the operator that things are moving along. It works fine, but is a bit old school. I thought that flashing a progress bar might be nice, but it seems that in order to operate the progress bar I have to know in advance how many records I will be processing. I am not seeing a way to do that with the REBOL ODBC interface. I insert the SQL into a command port or whatever it is called, and pick off the results one at a time, but I don't know how many I ultimately will be picking. Does anyone know if that information (the number of records returned) can be determined before actually processing them?
    
Thank you.
    
Old-school solution follows:
    
insert VISION-CMD SQL-PIDLOOKUP ;; Put an SQL string into the ODBC command port.
while [SQL-RESULT: pick VISION-CMD 1] [ ;; Pick off the results one at a time.
     LINE-COUNTER: LINE-COUNTER + 1
     if (0 = (remainder LINE-COUNTER 100)) [
         print [LINE-COUNTER 'Table items processed']
     ]
     ... other processing for a single record
]

posted by:   Steven White     2-Feb-2017/12:54:43-8:00



Perhaps do a count (*) first to get the number of results?
    
The docs on http://www.rebol.com/docs/database.html say to use a solution like
result: copy VISION-CMD
Perhaps result then contains the numbers of rows as its length?

posted by:   iArnold     2-Feb-2017/14:32:09-8:00