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、派生表等)