PDA

Ver la Versión Completa : Indices que dependan de funciones almacenadas


mercedesrc
30-09-2003, 11:38:48
Hola, quiero crear un indice que dependa de una función almacenada, es decir, del valor que devuelva y no que dependa de una campo de la tabla.

Podría alguien comentarme cual es la sentencia sql necesaria para crear este tipo de indicies y como sería el funcionamiento del índice.
Muy agradecida.
Mer.

jachguate
30-09-2003, 15:46:31
He probado sobre oracle 8 y esta característica no está disponible. Encuentro el error

ORA-00439: feature not enabled: Function-based indexes

ahora no tengo a la mano oracle 9i, pues mi servidor de pruebas esta abajo... :(

La sentencia debiera ser:


create index NombreIndice on NombreTabla(Funcion(argumentos)) y demas opciones de almacenamiento;


Si trabajas sobre oracle 9, probalo y si te funciona, por favor retroalimentá este hilo.

Hasta luego

;)

delphi.com.ar
30-09-2003, 15:48:16
Tienes que tener en cuenta que esto solo funciona a partir de Oracle 8i
CREATE INDEX NDX_UPPER_APELLIDO ON EMPLEADOS (UPPER(APELLIDO));

Saludos!

mercedesrc
01-10-2003, 12:24:29
Hola, muchas gracias por vuestras respuestas...
comentarles que he probado lo que me indican...
y buscando en internet he visto que la función
almacenada de oracle que quiera poder poner en la declaración del índice debe definirse como DETERMINISTIC
por ejemplo:
me creo la función..
--------------------------------------
CREATE FUNCTION FUNC_NOMBRE
( p1 in varchar)
RETURN varchar
DETERMINISTIC
IS
BEGIN
RETURN upper(p1) ;
END;

y creo el indice...
CREATE INDEX INDX_TABLA_A ON TABLA_A (FUNC_NOMBRE(NOMBRE) )
/

Y Siempre me da un error de privilegios insuficientes.
El administrador de la BD me ha otorgado todos los permisos pero no funciona.... sigue igual
Estoy trabajando con una BD Oracle 8.1.5.0.0

No he podido probarlo en 9i... saben si se puede en 9i???
y que significa definir la función como DETERMINISTC???
GRacias...