SELECT A.OBJECT_TYPE 타입,
A.OBJECT_NAME 명칭,
CASE A.OBJECT_TYPE
WHEN 'SYNONYM' THEN
(SELECT I.TABLE_OWNER || '.' || I.TABLE_NAME ||
'@' || I.DB_LINK
FROM USER_SYNONYMS I
WHERE A.OBJECT_NAME = I.SYNONYM_NAME)
WHEN 'TRIGGER' THEN
(SELECT I.TABLE_OWNER || '.' || I.TABLE_NAME
FROM USER_TRIGGERS I
WHERE A.OBJECT_NAME = I.TRIGGER_NAME)
ELSE
B.ARGUMENT_NAMES
END 비고
FROM USER_OBJECTS A,
(SELECT OBJECT_ID,
SUBSTR(MAX(SYS_CONNECT_BY_PATH(NVL(ARGUMENT_NAME, '(RESULT)'),
', ')),
3) ARGUMENT_NAMES
FROM (SELECT ARGUMENT_NAME,
OBJECT_ID,
ROW_NUMBER() OVER(PARTITION BY OBJECT_ID ORDER BY SEQUENCE) RUNM
FROM USER_ARGUMENTS)
START WITH RUNM = 1
CONNECT BY PRIOR RUNM = RUNM - 1
AND PRIOR OBJECT_ID = OBJECT_ID
GROUP BY OBJECT_ID) B
WHERE A.OBJECT_ID = B.OBJECT_ID(+)
AND A.OBJECT_TYPE IN ('FUNCTION', 'PROCEDURE', 'TRIGGER','SYNONYM', 'DATABASE LINK')
ORDER BY A.OBJECT_TYPE, A.OBJECT_NAME