Ver Mensaje Individual
  #2  
Antiguo 20-06-2003
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Reputación: 28
jachguate Va por buen camino
No entiendo exactamente que queres conseguir....

Además, todos los mensajes de error que has enviado parecen ser producto de un error "primario" que no se está viendo....

Porque no tratás de cambiar un poco tu rutina que genera el código aleatorio. Segun veo, queres generar un código para el que ya exista algún valor agregado a la tabla??

Es eso necesario???

que pasará cuando la tabla este vacia... nunca saldrá del ciclo...


Además, podrias agregar a tu procedure unas llamadas a dbms_output.Put_line, o un manejo de errores.

Que versión de Oracle utilizas... porque los métodos initialize, random y terminate están obsoletos ahora...

He revisado el package dbms_random y no eleva ninguna excepción....

porque no me envias la estructura completa de la tabla con triggers y stored procedures para poder hacer una prueba??

hasta luego.

ah... además te recomiendo el uso de la étiqueta [ CODE ] (sin los espacios...) con lo que podes conseguir un resultado como el siguiente:

Código:
create or replace function GeneraCodigo
  return integer as 
  code INTEGER;
  num INTEGER;
  seed BINARY_INTEGER;
begin
  SELECT IdCodeSeq.NextVal INTO seed FROM Dual;
  dbms_random.initialize(seed*1000);
  code := dbms_random.random;
  SELECT Count(*) into num FROM Tabla WHERE ID=code;
  while num=0 LOOP
    code := dbms_random.random;
    select count(*) into num from Tabla where ID =code;
  end loop;
  dbms_random.terminate;
  RETURN code;
end;
/
hasta luego.
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita