Hola amigos, no estoy de acuerdo con nuestro compañero sergio.
yo uso cursores sobre todo al momento de usar los GRID, y realmente me funcionan exelente. puedo manipular igual que una tabla dbf, es decir, modificar, borrar, insertar, puedo hacer un zap o volver a crearlo.
claro que para esto un cursor debes de declararlo de la siguiente forma
CREATE CURSOR Campo1 C(1), Campo2 C(2)
ahora bien, recuerda que una sentencia SQL, tal es el caso de un SELECT te devuelve no una tabla propiamente dicho, es una temporal en memoria, que puedes recorrerla igual pero que no tiene definidas ciertas propiedades, como el caso del buffer, o si es de lectura escritura. para que esto no te suceda, puedes intentar declarar un cursor como antes mencione, y al hacer la consulta, en el INTO pones el nombre de este cursor, y pruebas los resultados.
ahora bien, cada ves que generas una sentencia SQL el nombre del temporal de la clausa INTO, se vuelve a crear con valores nuevos. es decir no tienes que borrar para volver a usarlo.
Saludos y suerte