#define IN_KEYS 20 cSql = [SELECT ... FROM ... WHERE pk IN ( ] iCount = 0 SCAN iCount = iCount + 1 cSql = cSql + transform( cursor.pk ) + [,] IF iCount = IN_KEYS remove the last [,] cSql = cSql + [ ) ] SQLEXEC() insert spt to result iCount = 0 cSql = [SELECT ... FROM ... WHERE pk IN ( ] ENDIF ENDSCANfor last keys < IN_KEYS, you should execute again after SCAN loop exit