|    
			
				27/04/2009, 03:57
			
			
			  | 
  |   |  |  |  Fecha de Ingreso: marzo-2008 
						Mensajes: 7
					 Antigüedad: 17 años, 7 meses Puntos: 0 |  | 
  |  Respuesta: Consultas en arrays en plsql  
  Hola a todos,
 Os dejo mi solución final, seguro habrá maneras mejores de hacerlo pero por ahora a mi me ha funcionado.
 
 No muestro toda mi función PLSQL pero si como he declarado y la solucion final.
 
 Gracias a todos los que me habeis aportado algo de luz.
 
 -- ZONA DE DECLARACION
 
 DECLARE
 
 v_numeros_varray        numeros_array := numeros_array();
 v_existe                NUMBER;
 v_count                 PLS_INTEGER;
 k			PLS_INTEGER;
 p			PLS_INTEGER;
 v_numero                NUMBER;--1,2,3,4,5,1,2,3
 
 BEGIN
 
 export_numeros_varray := export_numeros_array();
 
 v_count := v_numeros_varray.count;
 
 IF v_count = 0 THEN
 
 k := k + 1;
 
 v_numeros_varray.extend;
 v_numeros_varray(k) := v_numero;
 
 ELSE
 
 -- funcion privada dentro de mi paquete PLSQL que comprueba que exista un determinado valor (numero) dentro de un array
 -- de datos.
 
 v_existe := existe_numero_array(v_numeros_varray, v_numero);
 
 -- Código de la función privada
 
 /*FUNCTION existe_numero_array(v_numeros_varray   IN v_numeros_array,
 v_numero       IN      NUMBER) RETURN NUMBER IS
 
 v_idut				NUMBER(14);
 v_log				VARCHAR2(2000);
 v_existe                        NUMBER(1);
 
 BEGIN
 
 FOR i IN v_numeros_varray.FIRST .. v_numeros_varray.LAST
 LOOP
 
 v_valor := v_numeros_varray(i);
 
 IF v_valor = v_numero THEN
 
 RETURN(1); -- ESTA REPETIDO
 
 ELSE
 
 v_existe := 0;
 
 END IF;
 END LOOP;
 
 IF v_existe = 0 THEN
 
 RETURN(0); -- NO ESTA REPETIDO
 
 END IF;
 
 END existe_numero_array;*/
 
 IF v_existe = 0 THEN
 
 k := k + 1;
 
 v_numeros_varray.extend;
 v_numeros_varray(k) := v_numero;
 
 END IF;
 
 END IF;
 
 -- Si no existe el valor en el array v_numeros_varray relleno otro array con los valores no repetidos.(1,2,3,4,5).
 
 IF v_existe = 0 OR v_count = 0 THEN
 
 p := p + 1;
 export_numeros_varray.extend;
 export_numeros_varray(p) := export_numeros_array(v_numero)(1);
 
 END IF;
 
 -- Como parametro de salida de mi funcion PLSQL es el array export_numeros_varray que contiene los valores no repetidos.
 
 END; -- fin del bloque.
     |