将多个值从SQL查询存储到存储过程变量

时间:2016-03-24 03:12:17

标签: sql sql-server

我想做类似下面的例子

ColumnAVal = Select ColumnA from TableA where....
ColumnBVal = Select ColumnB from TableA where....
Select * from TableB where ColumnC = (value from ColumnA)
Select * from TableC where ColumnD = (value from ColumnB)

我必须从TableA查询中获取具有一个hefty where子句的值。我必须从TableA获得大约20个不同的列。所以,上面的例子不是一个好主意。我试图找到一种更好的方法来保存这些值,这并不要求我使用相同的where子句20次。

基本上,想法是从TableA获取20个左右的列,并将它们保存为变量供以后使用。这样我就可以只创建一个查询来保存列值而不是二十次调用它。

E.g。

@QuantityAvailable =  SELECT TOP 1 WLPS_Qty_Available FROM 

TBL_Warehouse_Location_Parts_Spec, TBL_Location_Master, 
TBL_Warehouse_Master  WHERE     WLPS_Parts_Spec_ID = @PartSpecID AND    WLPS_Part_Type_ID IN ( 0, @PartTypeID ) AND WLPS_Active_Flag = 'Y' AND ( WLPS_Location_ID = @LocationID )  

我必须一次又一次地运行相同的查询20次。我宁愿不必为了节省一些处理费用。

2 个答案:

答案 0 :(得分:3)

vc

使用的值来自返回集合中的最后一行,因此只有当select返回单行或者它是否适当排序(不太好)时才有意义。

答案 1 :(得分:0)

- 我必须假设where子句在每种情况下都不同

Select * from TableB where ColumnC IN (Select ColumnA from TableA where....)
Select * from TableC where ColumnD IN (Select ColumnB from TableA where....)