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

Sql server 确定存储过程中字母引用的表,sql-server,sql-server-2008,stored-procedures,Sql Server,Sql Server 2008,Stored Procedures,我有一个引用了几个表的存储过程。然而,它指的是带有字母的表格 因此,假设一个名为Name的列来自表Users,那么存储过程可以调用该列的名称U.Users 我的问题是,如何获得所有此类映射的列表,即映射到表的所有字母?每个语句都为其使用的表指定自己的别名(如果有的话)。不同语句中使用的同一个表的别名可能不同(或没有别名)。不可能有一个地方可以查找每个表别名,也不可能有一个简单的方法可以从存储过程、函数或视图等中的所有语句中恢复它们。每个语句都为它所使用的表分配自己的别名(如果有的话)。不同语句中

我有一个引用了几个表的存储过程。然而,它指的是带有字母的表格

因此,假设一个名为
Name
的列来自表
Users
,那么存储过程可以调用该列的名称
U.Users


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

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

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

您指的是表别名,每个不同的查询都可以有自己的“映射”。这些别名值不是特定于存储过程的。以下是一个例子:

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.col1
YourTable1.col2
在上述两个查询中都会返回,尽管它们在第一个查询中有
“a”
别名,在第二个查询中有
“b”
别名。看到这个了吗

在上述示例中,人们经常使用表别名,因为编写
a.col1
YourTable.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

在引用表别名时,每个不同的查询都可以有自己的“映射”。这些别名值不是特定于存储过程的。以下是一个例子:

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.col1
YourTable1.col2
在上述两个查询中都会返回,尽管它们在第一个查询中有
“a”
别名,在第二个查询中有
“b”
别名。看到这个了吗

在上述示例中,人们经常使用表别名,因为编写
a.col1
YourTable.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

你在那个过程中有多少个表?你不能简单地查找别名吗?你知道吗?你在那个过程中有多少个表?你不能简单地查找别名吗?你知道吗?而且,别名应该是合乎逻辑的。这不仅是因为它的编写速度更快,而且有时(甚至可能主要是因为它提高了查询的可读性)。不仅因为它编写速度更快,而且有时(甚至可能主要是因为)因为它提高了查询的可读性。(同一别名可用于不同查询中的不同表。或者在同一查询中-子查询、CTE、派生表等)(同一别名可用于不同查询中的不同表,或在同一查询中-子查询、CTE、派生表等)