Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Oracle (https://www.clubdelphi.com/foros/forumdisplay.php?f=22)
-   -   Indices que dependan de funciones almacenadas (https://www.clubdelphi.com/foros/showthread.php?t=4046)

mercedesrc 30-09-2003 11:38:48

Indices que dependan de funciones almacenadas
 
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:

Código:

  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
Código:

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...


La franja horaria es GMT +2. Ahora son las 08:29:37.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi