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

时间:2015-04-24 17:34:52

标签: sql-server sql-server-2008 stored-procedures

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

因此,让我们说一个名为Name的列来自表Users,然后存储过程可以调用列名U.Users

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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

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

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"。见Using Table Aliases.

在上面的示例中,人们经常使用表别名,因为写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