为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:8
【操作系统】:linux
【CPU】:
【问题描述】*:请问如何导出所有存储过程依赖表的关系,用DM指定一个存储过程,右键可以看查看依赖关系,但想导出所有存储过程的全部依赖如何实现,有什么sql语句可以从系统表或视图中导出吗,谢谢。
把SQL中的SYSDBA换成你自己的模式名
SELECT DOBJS.SCHEMA_NAME "模式名",
DOBJS.NAME "对象名称",
SOBJS.NAME "被依赖对象所属模式",
DOBJS.REFED_TYPE$ "被依赖对象类型",
OBJS.NAME "被依赖对象名",
TEXTS.TXT
FROM ( SELECT OBJPROC.NAME,
OBJPROC.SCHEMA_NAME,
SDEP.REFED_TYPE$,
SDEP.REFED_ID
FROM SYSDEPENDENCIES SDEP
INNER JOIN ( SELECT
/*+ OPTIMIZER_OR_NBEXP(2) ORDER(PROC_OBJ_INNER, SCH_OBJ_INNER, USER_OBJ_INNER)*/
PROC_OBJ.ID ,
PROC_OBJ.NAME ,
SCH_OBJ.NAME "SCHEMA_NAME"
FROM (SELECT ID,
NAME
FROM SYSOBJECTS
WHERE TYPE$='SCH'
AND ID = (SELECT ID FROM SYSOBJECTS WHERE TYPE$='SCH' AND NAME ='SYSDBA')) SCH_OBJ, (SELECT PROC_OBJ_INNER.ID,
PROC_OBJ_INNER.NAME,
PROC_OBJ_INNER.CRTDATE,
PROC_OBJ_INNER.INFO1,
PROC_OBJ_INNER.SCHID,
PROC_OBJ_INNER.VALID
FROM SYSOBJECTS PROC_OBJ_INNER,
SYSOBJECTS SCH_OBJ_INNER,
SYSOBJECTS USER_OBJ_INNER
WHERE PROC_OBJ_INNER.SUBTYPE$='PROC'
AND PROC_OBJ_INNER.TYPE$='SCHOBJ'
AND PROC_OBJ_INNER.INFO1&0X01 = 0X01
AND (PROC_OBJ_INNER.INFO1/4)
&0X01=0
AND PROC_OBJ_INNER.SCHID = (SELECT ID FROM SYSOBJECTS WHERE TYPE$='SCH' AND NAME ='SYSDBA')
AND USER_OBJ_INNER.SUBTYPE$ = 'USER'
AND SCH_OBJ_INNER.ID = PROC_OBJ_INNER.SCHID
AND SCH_OBJ_INNER.PID = USER_OBJ_INNER.ID
AND SF_CHECK_PRIV_OPT(UID(), CURRENT_USERTYPE(), PROC_OBJ_INNER.ID, USER_OBJ_INNER.ID, USER_OBJ_INNER.INFO1, PROC_OBJ_INNER.ID) = 1) PROC_OBJ
WHERE PROC_OBJ.SCHID=SCH_OBJ.ID
ORDER BY PROC_OBJ.NAME) OBJPROC
ON SDEP.ID=OBJPROC.ID) DOBJS
LEFT JOIN SYSOBJECTS OBJS
ON DOBJS.REFED_ID = OBJS.ID
LEFT JOIN SYSOBJECTS SOBJS
ON OBJS.SCHID = SOBJS.ID
AND OBJS.SCHID != 0
LEFT JOIN SYSTEXTS TEXTS
ON OBJS.ID = TEXTS.ID;
使用管理工具查看