Ver Mensaje Individual
  #4 (permalink)  
Antiguo 24/01/2012, 15:30
Avatar de matanga
matanga
 
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 16 años, 6 meses
Puntos: 85
Respuesta: esta bien mi insert? Error SQL: ORA-00947

Cita:
INSERT INTO "SYSTEM"."CONTROL_PERMISOS" (
usuario,
rol,
vigencia,
creado,
expira)
VALUES (
grantee,
granted_role,
(SELECT created FROM dba_users),
(SELECT expiry_date FROM dba_users)
)
FROM dba_role_privs;
El problema lo tienes porque las subconsultas sobre la dba_users devuelven más de un registro cada registro de la dba_role_privs, tendrías que utilizar la sintaxis:

Código:
insert into system.control_permisos  (
 usuario, 
 rol, 
 vigencia, 
 creado, 
 expira) 
select 
 dba_role_privs.grantee,
 dba_role_privs.granted_role,
 dba_users.created,
 dba_users.expiry_date
from dba_role_privs, dba_users
where
 dba_role_privs.grantee = dba_users.username;
Finalmente, no tengo claro si esto que planteas es solo un ejemplo o una necesidad real, en caso de lo segundo, puedes crear una vista para evitar tener una tabla y cargar los datos:

Código:
create or replace view system.control_permisos
as
select 
 dba_role_privs.grantee,
 dba_role_privs.granted_role,
 dba_users.created,
 dba_users.expiry_date
from dba_role_privs, dba_users
where
 dba_role_privs.grantee = dba_users.username;
Saludos