确定存储过程中字母引用的表

Determine Tables Referenced By Letters In Stored Procedure

我有一个引用了几个 table 的存储过程。但是,它指的是带字母的table。

所以假设名为 Name 的列来自 table Users,那么存储过程可能会调用列名 U.Users

我的问题是,如何获得所有此类映射的列表,即映射到 table 的所有字母?

每个语句为其使用的 table 分配自己的别名(如果有的话)。不同语句中使用的相同 table 可以使用不同的别名(或不使用别名)。不可能有一个地方可以查找每个 table 别名,也没有一个简单的方法可以从存储过程或函数或视图等中的所有语句中恢复它们。

您指的是 table 个别名,每个不同的查询都可以有自己的 "mapping"。这些别名值并不特定于存储过程。这是一个例子:

select
   a.col1, a.col2
   FROM YourTable1  a

select
    b.col1, b.col2
    from YourTable2           a
        inner join YourTable1 b on a.col1=b.col2

YourTable1.col1YourTable1.col2 在上述两个查询中返回,尽管它们在第一个查询中有 "a" 别名,在第二个查询中有 "b" 别名.看到这个 Using Table Aliases.

在上面的示例中,人们经常使用 table 别名,因为 a.col1YourTable.col1 更快。任何人都无法知道您的存储过程中使用的别名,您需要弄清楚这一点,请查看这些示例以提供帮助:

FROM YourTable  a
--   ^table     ^alias

FROM YourTable AS a
--   ^table       ^alias

FROM YourTable1             a
    INNER JOIN YourTable2   b ON a.col1=b.col1
    --         ^table       ^alias

FROM YourTable1             AS a
    INNER JOIN YourTable2   AS b ON a.col1=b.col1
    --         ^table          ^alias