Pregunta: | 4574 - ¿ES POSIBLE GENERAR INDICES EN UN CURSOR GENERADO EN SQL? |
Autor: | Manuel Castillo Ceron |
QUISIERA SABER SI SE PUEDEN GENERAR INDICES EN UN CURSOR GENERADO POR UNA INSTRUCCION EN SQL Y DE SER ESTO POSIBLE QUISIERA SABER SI SE PUEDE MANEJAR UN INDICE COMPUESTO POR DOS CAMPOS PARA PODER REALIZAR UNA BUSQUEDA. |
Respuesta: | VICTOR JOSE FUENMAYOR HERNANDEZ |
Ya con la Version 7.0, puedes crear indices, en los cursores, Saludos |
Respuesta: | Hernán Ovalles |
Sí es posible generar índices compuestos por varios campos sobre cursores generados a partir de una instrucción SQL. De hecho, yo siempre lo hago en mis aplicaciones cuando lo necesito, es decir, cuando necesito hacer búsquedas directas con el comando SEEK o la función SEEK(). Por ejemplo:
select * from clientes into cursor prueba select prueba index on desc_clie + codi_clie tag desc_clie Tienes que tomar en cuenta que los cursores son archivos o tablas temporales y éstos se borrarán después de salir de la aplicación. |
Respuesta: | Marga del Pino |
Hasta donde sé no es posible definir indices a un cursor. Como sabrás un cursor es una tabla temporal residente en memoria, que desaparece al cerrarse todas las tablas de la BD (o la BD si estás en VFP) o seaa no que da copia de ella en disco. Un cursor puede crearse ordenado. Si quieres hacer búsquedas, crea con ese mismo comando SELECT SQL una tabla (en lugar de la cláusula into cursor, utiliza into table. A continuación utiliza el comando index on, y luego de abrir la tabla indizada por ese criterio (tag) podrás hacer búsquedas con el comando seek o la función seek(). En segundo lugar, si es posible crear llaves por dos y muchos más campos, solo que la expresión de índice debe ser de caracteres, o sea, si quieres indizar por los campos código de autor N(4) y código de libro N(4) debes decir, por ejemplo: use autlib index on str(aut,4)+str(lib,4) tag indal Cuando ya vayas a utilizar la tabla indizada use autlib order tag indal Si los dos campos son de caracteres basta concatenarlos: index on pais+nombre ...... O sea siempre que aparezcan campos numéricos o tipo fecha en una expresión de indice hay que convertirlos a caracteres. La función de conversión de fecha a caracteres es DTOC Espero te sirva de ayuda. |