存储过程中使用的列

时间:2010-08-31 12:28:35

标签: sql

如何查找是否在存储过程中的任何insert,update或delete语句中使用了列。我使用了系统查询,但不准确。我们可以在sql management studio中手动检查它还是有任何查询?

1 个答案:

答案 0 :(得分:2)

更简单的方法是使用 RedGate SQL搜索

但是,如果您愿意,可以使用INFORMATION_SCHEMA.ROUTINES和ROUTINE_DEFINITION构建查询。

编辑:

您可以使用此

SELECT ROUTINE_NAME, ROUTINE_DEFINITION 
FROM INFORMATION_SCHEMA.ROUTINES 
WHERE ROUTINE_DEFINITION LIKE '%YOUR COLUMN %' 
    AND ROUTINE_TYPE='PROCEDURE'

或者如果您在数据库中有多个具有相同名称的列,则可以使用此。

select DISTINCT p.name
from sys.procedures p   
    INNER JOIN sys.sql_dependencies d on p.object_id = d.object_id
    INNER JOIN sys.tables t on t.object_id = d.referenced_major_id
    INNER JOIN INFORMATION_SCHEMA.ROUTINES R ON R.ROUTINE_NAME = p.name
WHERE R.ROUTINE_DEFINITION like '%YOUR COLUMN %' AND t.name = YOURTABLE 

但是,我认为你应该使用Search SQL