oracle8.1.6 select grantee_id, grantee_name, privilege from (select grantee_id, acs_object.name(grantee_id) as grantee_name, privilege, 1 as counter from acs_permissions_all where object_id = :object_id union all select grantee_id, acs_object.name(grantee_id) as grantee_name, privilege, -1 as counter from acs_permissions where object_id = :object_id ) group by grantee_id, grantee_name, privilege having sum(counter) > 0 select count(*) from ( select grantee_id, grantee_name, privilege from (select grantee_id, acs_object.name(grantee_id) as grantee_name, privilege, 1 as counter from acs_permissions_all where object_id = :object_id union all select grantee_id, acs_object.name(grantee_id) as grantee_name, privilege, -1 as counter from acs_permissions where object_id = :object_id ) group by grantee_id, grantee_name, privilege having sum(counter) > 0 ) as counts select object_id as c_object_id,acs_object.name(object_id) as c_name, object_type as c_type from acs_objects o where context_id = :object_id and exists (select 1 from acs_object_party_privilege_map where object_id = o.object_id and party_id = :user_id and privilege = 'admin') select count(*) as num_children from acs_objects o where context_id = :object_id and acs_permission.permission_p(o.object_id, :user_id, 'admin') = 't'