我继承了许多内置嵌套存储过程的非常大的存储过程。我想创建一个存储过程,我可以运行它来向我展示特定存储过程的所有依赖项 - 列出其中的所有表和嵌套存储过程。
我正在使用以下代码,但这只给出了顶级依赖项,而不是嵌套存储过程中的任何内容
CREATE TABLE #TEMP_ROADMAP
(
TBL_OBJECT_NAME VARCHAR(50),
TBL_TYPE VARCHAR(20),
TBL_PARENT VARCHAR(20),
PROCNAME VARCHAR(50)
)
DECLARE @PARENTPROC VARCHAR(100)
SET @PARENTPROC = '[DBO].[RULE_PROC_1]'
INSERT INTO #TEMP_ROADMAP (TBL_OBJECT_NAME,TBL_TYPE)
SELECT DISTINCT
[OBJECT_NAME] = SCHEMA_NAME(O.[SCHEMA_ID]) + '.' + O.NAME, O.TYPE_DESC
FROM
SYS.DM_SQL_REFERENCED_ENTITIES (@PARENTPROC, 'OBJECT') D
JOIN
SYS.OBJECTS O ON D.REFERENCED_ID = O.[OBJECT_ID]
WHERE
O.[TYPE] IN ('U', 'V', 'P', 'IF', 'FN')
UPDATE #TEMP_ROADMAP
SET TBL_PARENT = 'PARENT',
PROCNAME = @PARENTPROC
WHERE TBL_OBJECT_NAME IS NOT NULL
SELECT * FROM #TEMP_ROADMAP
DROP TABLE #TEMP_ROADMAP
输出:
TBL_OBJECT_NAME TBL_TYPE TBL_PARENT PROCNAME
dbo.RULE_PROC_2 SQL_STORED_PROCEDURE PARENT [DBO].[RULE_PROC_1]
dbo.TEST_TABLE_1 USER_TABLE PARENT [DBO].[RULE_PROC_1]
我可以在这个父程序中获取其他嵌套存储过程的表和名称吗?
答案 0 :(得分:0)
很抱歉,如果我误解你,但我认为你需要这个: -
foreach ($form["team"]->getData() as $value) {
'name' => $value['name']