select c.obj#,
c.col#,
c.intcol#,
c.segcol#,
bitand(c.property, 4294967295),
trunc(c.property / power(2,32)),
c2.name,
(select a.name
from attrcol$ a
where a.obj# = c2.obj# and
a.intcol# = c2.intcol#),
c.type#,
c.deflength,
case
when c.deflength is null or bitand(c.property,32+65536)=0
or c.deflength > 4000
then null
else
sys.dbms_metadata_util.func_index_default(c.deflength,
c.rowid)
end,
case
when c.deflength is null or bitand(c.property,32+65536)=0
or c.deflength <= 4000
then null
when c.deflength <= 32000
then
sys.dbms_metadata_util.func_index_defaultc(c.deflength,
c.rowid)
else
sys.dbms_metadata_util.long2clob(c.deflength,
'SYS.COL$',
'DEFAULT$',
c.rowid)
end,
case
when c.deflength is null or bitand(c.property,32+65536)=0
then null
else
(select sys.dbms_metadata.parse_default(u.name,o.name,
c.deflength,c.rowid)
from obj$ o, user$ u
where o.obj#=c.obj# and o.owner#=u.user#)
end
from col$ c, col$ c2, ccol$ cc, cdef$ cd, coltype$ ct
where cc.obj# = c.obj# and
cc.intcol# = c.intcol# and
cd.con# = cc.con# and
ct.obj# = c.obj# and
ct.col# = c.col# and
ct.intcols = cd.intcols and
UTL_RAW.CAST_TO_BINARY_INTEGER(
SUBSTRB(ct.intcol#s, (cc.pos# * 2 - 1), 2), 3) = c.intcol# and
c2.obj# = c.obj# and
c2.intcol# = ct.intcol#
SELECT C.OBJ#
,
C.COL#
,
C.INTCOL#
,
C.SEGCOL#
,
BITAND(C.PROPERTY
, 4294967295)
,
TRUNC(C.PROPERTY / POWER(2
, 32))
,
C2.NAME
,
(SELECT A.NAME
FROM ATTRCOL$ A
WHERE A.OBJ# = C2.OBJ# AND
A.INTCOL# = C2.INTCOL#)
,
C.TYPE#
,
C.DEFLENGTH
,
CASE
WHEN C.DEFLENGTH IS NULL OR BITAND(C.PROPERTY
, 32+65536)=0
OR C.DEFLENGTH > 4000
THEN NULL
ELSE
SYS.DBMS_METADATA_UTIL.FUNC_INDEX_DEFAULT(C.DEFLENGTH
,
C.ROWID)
END
,
CASE
WHEN C.DEFLENGTH IS NULL OR BITAND(C.PROPERTY
, 32+65536)=0
OR C.DEFLENGTH <= 4000
THEN NULL
WHEN C.DEFLENGTH <= 32000
THEN
SYS.DBMS_METADATA_UTIL.FUNC_INDEX_DEFAULTC(C.DEFLENGTH
,
C.ROWID)
ELSE
SYS.DBMS_METADATA_UTIL.LONG2CLOB(C.DEFLENGTH
,
'SYS.COL$'
,
'DEFAULT$'
,
C.ROWID)
END
,
CASE
WHEN C.DEFLENGTH IS NULL OR BITAND(C.PROPERTY
, 32+65536)=0
THEN NULL
ELSE
(SELECT SYS.DBMS_METADATA.PARSE_DEFAULT(U.NAME
, O.NAME
,
C.DEFLENGTH
, C.ROWID)
FROM OBJ$ O
, USER$ U
WHERE O.OBJ#=C.OBJ#
AND O.OWNER#=U.USER#)
END
FROM COL$ C
, COL$ C2
, CCOL$ CC
, CDEF$ CD
, COLTYPE$ CT
WHERE CC.OBJ# = C.OBJ# AND
CC.INTCOL# = C.INTCOL# AND
CD.CON# = CC.CON# AND
CT.OBJ# = C.OBJ# AND
CT.COL# = C.COL# AND
CT.INTCOLS = CD.INTCOLS AND
UTL_RAW.CAST_TO_BINARY_INTEGER(
SUBSTRB(CT.INTCOL#S
, (CC.POS# * 2 - 1)
, 2)
, 3) = C.INTCOL# AND
C2.OBJ# = C.OBJ# AND
C2.INTCOL# = CT.INTCOL#
|
|
|