将一个存储过程的结果作为另一个存储过程的参数传递

时间:2015-08-04 15:29:34

标签: sql sql-server stored-procedures

程序1:

EXEC Parse
@Part = '0123,4567'
@Qty = '1,1';

返回以下内容:

Part        Qty
0123         1
4567         1

此过程只需输入部分和数量,并在每个“,”实例处解析字符串。

程序2:

EXEC PA
@Part = '0123'
@Qty = '1';

返回以下内容:

Top-Level Assembly     TotalQty      MaterialPart     Qty
      0123                1             12A            2
      0123                1             13A           21
      0123                1             14A            5

我的总体目标是让用户输入装配零件或装配零件清单(以逗号分隔)及其适当的数量。第一个过程创建所有装配零件的结果列表。第二个过程应该从第一个过程的结果集中运行,以获得构成组件的所有部分。

如何根据第一个程序的结果运行第二个程序?非常感谢任何帮助!!

1 个答案:

答案 0 :(得分:0)

我会创建一个临时表,并在CURSOR中迭代结果。我正在对您的数据类型进行假设,因此根据需要进行更改。

Create Table #Results 
(
    Part    Varchar (10),
    Qty     Int
)

Insert  #Results
Execute Parse @Part = '0123,4567', @Qty = '1,1';

Declare @cPart Varchar (10),
        @cQty Int

Declare cur Cursor Local Fast_Forward For 
    Select Part, Qty 
    From #Results
Open cur

While (1 = 1)
Begin
    Fetch Next From cur Into @cPart, @cQty
    If (@@FETCH_STATUS <> 0) Break

    Execute PA @Part = @cPart, @Qty = @cQty
End

Close cur
Deallocate cur