Ver Mensaje Individual
  #1  
Antiguo 12-06-2003
Isabel Isabel is offline
Miembro
 
Registrado: jun 2003
Posts: 15
Reputación: 0
Isabel Va por buen camino
Question Problemas con package dbms_crypto_toolkit

Hola a todos!!!
Quiero insertar valores en una tabla de manera q cuando el valor de uno de los campos sea nulo insertar un valor aleatorio. El código q he implementado en PL/SQL para hacer esto es el sgte:

create sequence IdCodeSeq;

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;
/

create or replace trigger BITabla
before insert on Tabla for each row
begin
if :new.Id is null then
:new.Id := GeneraCodigo;
end if;
end;
/

Y el mensaje de error que me aparece es el siguiente:
SQL> insert into tabla values(null);
insert into tabla values(null)
*
ERROR en línea 1:
ORA-06521: PL/SQL: Error al crear la correspondencia de la función
ORA-06512: en "USERP.DBMS_CRYPTO_TOOLKIT", línea 23
ORA-06512: en "USERP.DBMS_CRYPTO_TOOLKIT", línea 962
ORA-06512: en "USERP.DBMS_RANDOM", línea 15
ORA-06512: en "USERP.GENERACODIGO", línea 9
ORA-06512: en "USERP.BITABLA", línea 4
ORA-04088: error durante la ejecución del disparador 'USERP.BITABLA'

donde UserP es un usuario con el rol dba asignado y propietario de la tabla en la q quiero hacer la inserción.

Qué estoy haciendo mal?
Muchas gracias a todos por vuestra ayuda y sugerencias.
Hasta pronto,
Isabel
Responder Con Cita