djb*_*ois 5 sql sql-server stored-procedures
我发现这段代码可以找到任何引用单个特定列的存储过程。现在我想创建一个查找引用多个特定列的存储过程的程序。
SELECT DISTINCT Name
FROM sys.procedures
WHERE OBJECT_DEFINITION(OBJECT_ID) LIKE '%tbl_name%'
AND OBJECT_DEFINITION(OBJECT_ID) LIKE '%CreatedDate%';
Run Code Online (Sandbox Code Playgroud)
如果可能的话,我有时可以指定列可能来自哪个表(有时是多个表)?
当然只需扩展您的 SQL 以包含其他 AND 子句,例如:
SELECT DISTINCT Name
FROM sys.procedures
WHERE OBJECT_DEFINITION(OBJECT_ID) LIKE '%tbl_name%'
AND OBJECT_DEFINITION(OBJECT_ID) LIKE '%CreatedDate%'
AND OBJECT_DEFINITION(OBJECT_ID) LIKE '%Other_tbl_name%'
AND OBJECT_DEFINITION(OBJECT_ID) LIKE '%Other_CreatedDate%';
Run Code Online (Sandbox Code Playgroud)
这对你有用吗?
另外,除非您的列名称在每个表中都是唯一的,否则我希望您可能会得到误报,因此例如 tbl_name 可能会被引用为 CreatedDate 列,但这并不意味着对 CreatedDate 的列引用来自 tbl_name.CreatedDate。
另外,我认为这不会捕获动态 SQL 中的任何引用,因为其中的引用只是文本,不能绑定到系统对象。
| 归档时间: |
|
| 查看次数: |
2368 次 |
| 最近记录: |