<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://springboardsolutions.com/wiki/index.php?action=history&amp;feed=atom&amp;title=Tree_Queries</id>
		<title>Tree Queries - Revision history</title>
		<link rel="self" type="application/atom+xml" href="http://springboardsolutions.com/wiki/index.php?action=history&amp;feed=atom&amp;title=Tree_Queries"/>
		<link rel="alternate" type="text/html" href="http://springboardsolutions.com/wiki/index.php?title=Tree_Queries&amp;action=history"/>
		<updated>2026-10-17T04:10:01Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.25.2</generator>

	<entry>
		<id>http://springboardsolutions.com/wiki/index.php?title=Tree_Queries&amp;diff=153&amp;oldid=prev</id>
		<title>WikiSysop: 1 revision imported</title>
		<link rel="alternate" type="text/html" href="http://springboardsolutions.com/wiki/index.php?title=Tree_Queries&amp;diff=153&amp;oldid=prev"/>
				<updated>2016-03-25T08:51:06Z</updated>
		
		<summary type="html">&lt;p&gt;1 revision imported&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;tr style='vertical-align: top;'&gt;
				&lt;td colspan='1' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan='1' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 08:51, 25 March 2016&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan='2' style='text-align: center;'&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>WikiSysop</name></author>	</entry>

	<entry>
		<id>http://springboardsolutions.com/wiki/index.php?title=Tree_Queries&amp;diff=151&amp;oldid=prev</id>
		<title>WikiSysop at 18:10, 28 November 2015</title>
		<link rel="alternate" type="text/html" href="http://springboardsolutions.com/wiki/index.php?title=Tree_Queries&amp;diff=151&amp;oldid=prev"/>
				<updated>2015-11-28T18:10:26Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Getting Hierarchical Data==&lt;br /&gt;
&lt;br /&gt;
Hierarchical or tree data can be obtained from an [[Oracle Database]] table using &amp;quot;connect by&amp;quot; queries. &lt;br /&gt;
&lt;br /&gt;
In this example, we are using the role_role_privs view. This view gives the roles that are granted (role_granted) to another role (role). A hierarchy of roles can be built up by roles that contain roles being granted to yet another role.&lt;br /&gt;
&lt;br /&gt;
The following query gives this heirarchy for the DBA role:&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select role&lt;br /&gt;
,lpad(' ',(level-1)*4,' ')||granted_role&lt;br /&gt;
from role_role_privs&lt;br /&gt;
start with role='DBA'&lt;br /&gt;
connect by prior granted_role=role&lt;br /&gt;
;&lt;br /&gt;
&lt;br /&gt;
ROLE                           LPAD('',(LEVEL-1)*4,'')||GRANTED_ROLE&lt;br /&gt;
------------------------------ ---------------------------------------------------&lt;br /&gt;
DBA                            DATAPUMP_EXP_FULL_DATABASE&lt;br /&gt;
DATAPUMP_EXP_FULL_DATABASE         EXP_FULL_DATABASE&lt;br /&gt;
EXP_FULL_DATABASE                      EXECUTE_CATALOG_ROLE&lt;br /&gt;
EXECUTE_CATALOG_ROLE                       HS_ADMIN_EXECUTE_ROLE&lt;br /&gt;
EXP_FULL_DATABASE                      SELECT_CATALOG_ROLE&lt;br /&gt;
SELECT_CATALOG_ROLE                        HS_ADMIN_SELECT_ROLE&lt;br /&gt;
DBA                            DATAPUMP_IMP_FULL_DATABASE&lt;br /&gt;
DATAPUMP_IMP_FULL_DATABASE         EXP_FULL_DATABASE&lt;br /&gt;
EXP_FULL_DATABASE                      EXECUTE_CATALOG_ROLE&lt;br /&gt;
EXECUTE_CATALOG_ROLE                       HS_ADMIN_EXECUTE_ROLE&lt;br /&gt;
EXP_FULL_DATABASE                      SELECT_CATALOG_ROLE&lt;br /&gt;
SELECT_CATALOG_ROLE                        HS_ADMIN_SELECT_ROLE&lt;br /&gt;
DATAPUMP_IMP_FULL_DATABASE         IMP_FULL_DATABASE&lt;br /&gt;
IMP_FULL_DATABASE                      EXECUTE_CATALOG_ROLE&lt;br /&gt;
EXECUTE_CATALOG_ROLE                       HS_ADMIN_EXECUTE_ROLE&lt;br /&gt;
IMP_FULL_DATABASE                      SELECT_CATALOG_ROLE&lt;br /&gt;
SELECT_CATALOG_ROLE                        HS_ADMIN_SELECT_ROLE&lt;br /&gt;
DBA                            DELETE_CATALOG_ROLE&lt;br /&gt;
DBA                            EXECUTE_CATALOG_ROLE&lt;br /&gt;
EXECUTE_CATALOG_ROLE               HS_ADMIN_EXECUTE_ROLE&lt;br /&gt;
DBA                            EXP_FULL_DATABASE&lt;br /&gt;
EXP_FULL_DATABASE                  EXECUTE_CATALOG_ROLE&lt;br /&gt;
EXECUTE_CATALOG_ROLE                   HS_ADMIN_EXECUTE_ROLE&lt;br /&gt;
EXP_FULL_DATABASE                  SELECT_CATALOG_ROLE&lt;br /&gt;
SELECT_CATALOG_ROLE                    HS_ADMIN_SELECT_ROLE&lt;br /&gt;
DBA                            GATHER_SYSTEM_STATISTICS&lt;br /&gt;
DBA                            IMP_FULL_DATABASE&lt;br /&gt;
IMP_FULL_DATABASE                  EXECUTE_CATALOG_ROLE&lt;br /&gt;
EXECUTE_CATALOG_ROLE                   HS_ADMIN_EXECUTE_ROLE&lt;br /&gt;
IMP_FULL_DATABASE                  SELECT_CATALOG_ROLE&lt;br /&gt;
SELECT_CATALOG_ROLE                    HS_ADMIN_SELECT_ROLE&lt;br /&gt;
DBA                            JAVA_ADMIN&lt;br /&gt;
DBA                            JAVA_DEPLOY&lt;br /&gt;
DBA                            OLAP_DBA&lt;br /&gt;
DBA                            OLAP_XS_ADMIN&lt;br /&gt;
DBA                            SCHEDULER_ADMIN&lt;br /&gt;
DBA                            SELECT_CATALOG_ROLE&lt;br /&gt;
SELECT_CATALOG_ROLE                HS_ADMIN_SELECT_ROLE&lt;br /&gt;
DBA                            WM_ADMIN_ROLE&lt;br /&gt;
DBA                            XDBADMIN&lt;br /&gt;
DBA                            XDB_SET_INVOKER&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The query selects role and granted role from the table. It treats those rows where the role is DBA as the top nodes of the hierarchy. It follows the hierarchy by using the connect by prior clause.&lt;br /&gt;
&lt;br /&gt;
The query then lists those rows with a granted_role same as this row's role, in turn listing the rows below each of these rows.&lt;br /&gt;
&lt;br /&gt;
We have padded the granted role with spaces to show the depth within the treem using the expression:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
lpad(' ',(level-1)*4,' ')||granted_role&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;level&amp;quot; is the depth in the tree (counts from one, so we took one off), and multiplied by 4 so that the indentations are visible, and used lpad to add that many spaces to the beginning of the granted_role.&lt;br /&gt;
&lt;br /&gt;
See also:&lt;br /&gt;
&lt;br /&gt;
[[Direct Reports]] - this uses the recursive SQL method for displaying a tree.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>	</entry>

	</feed>