【发布时间】:2014-02-20 05:55:21
【问题描述】:
我正在 SQL Server 存储过程中进行选择。此选择将结果返回给调用者,这是我需要的,但我还需要在存储过程的其余部分中使用选择中的字段之一。
现在,我正在正常进行选择。然后我创建一个临时表,并再次重新执行相同的选择,但我将结果插入到临时表中。有一个更好的方法吗?
对于上下文,我实际上是从数据库中拉出一棵树。有很多一对多的表,我正在使用从一个级别获得的 id 来拉出下一个级别。
【问题讨论】:
-
你能告诉我们你尝试了什么,数据库的内容,你的预期输出。
-
我的输出很好。似乎应该有一种更有效的方法,因为我基本上每次选择都做了两次。例如,有一个“Continents”表、一个“Countries”表和一个“Provinces”表。我需要把亚洲和南美洲的所有国家以及这些国家的所有省份都抽出来。每个大陆和每个国家之间都有一个唯一的 id。每个国家和每个省之间也有一个唯一的 ID。
-
不确定我是否完全理解(即您是否有固定数量的关卡),但您是否为此研究过 CTE?以下是众多示例之一:stackoverflow.com/questions/2199942/… 这使您可以在一个查询中拼接一个自引用表。它可能会也可能不会更有效。
-
我确实看到了这个问题,但我的情况有所不同,因为我没有自引用表。相反,我有三个不同的表。第二个表存储类型 A 的实体和类型 B 的实体之间的一对多关系。第三个表存储类型 B 的实体和类型 C 的实体之间的一对多关系。
-
OUTPUT 参数也许是你需要的..technet.microsoft.com/en-us/library/ms187004(v=sql.105).aspx
标签: sql sql-server sql-server-2008 stored-procedures