代码之家  ›  专栏  ›  技术社区  ›  superachu

存储过程中使用的列

sql
  •  0
  • superachu  · 技术社区  · 14 年前

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

    1 回复  |  直到 14 年前
        1
  •  2
  •   Bruno Costa    14 年前

    .

    但是,您可以使用_SCHEMA.ROUTINES程序如果你愿意的话,还有你的定义。

    编辑:

    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