select distinct x.xmldata.schema_url,
x.xmldata.schema_owner,
x.sys_nc_oid$,
xt.schema_location,
xd.owner,
xd.schema_id
from xdb.xdb$schema x,
table(x.xmldata.imports) xt,
dba_xml_schemas xd,
dba_xml_schemas xd2
where (not (x.xmldata.schema_owner ='SYS')) and
(x.xmldata.imports is not null) and
(xd2.schema_id = x.sys_nc_oid$) and (xd2.hidden = xd.hidden) and
( /* included schema owned by same user as schema */
((xd.schema_url = xt.schema_location) and
(xd.owner = x.xmldata.schema_owner))
or
/* included schema is not owned by same user as schema */
/* so must be global */
(not exists (select * from dba_xml_schemas
where owner = x.xmldata.schema_owner and
schema_url = xt.schema_location)
and
(xd.schema_url = xt.schema_location)
and
(xd.local = 'NO'))
)
SELECT DISTINCT X.XMLDATA.SCHEMA_URL
,
X.XMLDATA.SCHEMA_OWNER
,
X.SYS_NC_OID$
,
XT.SCHEMA_LOCATION
,
XD.OWNER
,
XD.SCHEMA_ID
FROM XDB.XDB$SCHEMA X
,
TABLE(X.XMLDATA.IMPORTS) XT
,
DBA_XML_SCHEMAS XD
,
DBA_XML_SCHEMAS XD2
WHERE (NOT (X.XMLDATA.SCHEMA_OWNER ='SYS')) AND
(X.XMLDATA.IMPORTS IS NOT NULL) AND
(XD2.SCHEMA_ID = X.SYS_NC_OID$)
AND (XD2.HIDDEN = XD.HIDDEN) AND
( /* INCLUDED SCHEMA OWNED BY SAME USER AS SCHEMA */
((XD.SCHEMA_URL = XT.SCHEMA_LOCATION) AND
(XD.OWNER = X.XMLDATA.SCHEMA_OWNER))
OR
/* INCLUDED SCHEMA IS NOT OWNED BY SAME USER AS SCHEMA */
/* SO MUST BE GLOBAL */
(NOT EXISTS (SELECT *
FROM DBA_XML_SCHEMAS
WHERE OWNER = X.XMLDATA.SCHEMA_OWNER AND
SCHEMA_URL = XT.SCHEMA_LOCATION)
AND
(XD.SCHEMA_URL = XT.SCHEMA_LOCATION)
AND
(XD.LOCAL = 'NO'))
)
|
|
|