#sql #oracle #oracle-sqldeveloper
#sql #Oracle #oracle-sqldeveloper
Вопрос:
Используя приведенный ниже запрос, я пытаюсь получить db_unique_name из v $database в сочетании со столбцом ПРИВИЛЕГИЙ DBA_PRIV_AUDIT_OPTS.Но я получаю сообщение об ошибке «ORA-00918: столбец определен неоднозначно».Пожалуйста, предложите.Спасибо.
select db_unique_name||':'||PRIVILEGE DB_NAME_PRIV,PROXY_NAME,PRIVILEGE,SUCCESS,FAILURE from
(SELECT d.PRIVILEGE,d.PROXY_NAME,d.PRIVILEGE,d.SUCCESS,d.FAILURE from DBA_PRIV_AUDIT_OPTS d
where d.PRIVILEGE in ('AUDIT SYSTEM','AUDIT ANY','ALTER SYSTEM','GRANT ANY ROLE','GRANT ANY PRIVILEGE','GRANT ANY OBJECT PRIVILEGE','CREATE USER','ALTER USER','DROP USER')),v$database;
Ответ №1:
Вы указали d.privilege
дважды, поэтому просто удалили лишний:
select db_unique_name||':'||PRIVILEGE DB_NAME_PRIV,PROXY_NAME,PRIVILEGE,SUCCESS,FAILURE from
(SELECT d.PRIVILEGE,d.PROXY_NAMEd.SUCCESS,d.FAILURE from DBA_PRIV_AUDIT_OPTS d
where d.PRIVILEGE in ('AUDIT SYSTEM','AUDIT ANY','ALTER SYSTEM','GRANT ANY ROLE','GRANT ANY PRIVILEGE','GRANT ANY OBJECT PRIVILEGE','CREATE USER','ALTER USER','DROP USER')),v$database;
Кроме того, почему бы просто не обойтись без подзапроса?
select db_unique_name||':'||PRIVILEGE DB_NAME_PRIV,PROXY_NAME,PRIVILEGE,SUCCESS,FAILURE
from DBA_PRIV_AUDIT_OPTS d, v$database
where d.PRIVILEGE in (
'AUDIT SYSTEM','AUDIT ANY','ALTER SYSTEM'
,'GRANT ANY ROLE','GRANT ANY PRIVILEGE'
,'GRANT ANY OBJECT PRIVILEGE','CREATE USER'
,'ALTER USER','DROP USER'
);