日期:2014-05-17  浏览次数:20466 次

急:存储过程遍历调用存储过程* (赏100分)
存储过程(proc_GetFltAriLineByOrderId名称):是根据订单号(OrderID)得到路程(Tpm)只有一条。


现在要写一个存储过程调用上面那个存储过程
根据用户UID得到订单号 订单号可能为多行,返回的订单OrderID可能是个集合。
CREATE PROCEDURE [dbo].[proc_GetFltAriLineByOrderId2]
     @UID varchar(10)
AS
begin
     select fltorder.OrderID from 
     [FltOrderDB].[dbo].[FltPassenger] fltpass 
     inner join [FltOrderDB].[dbo].[FltOrder] fltorder 
     on fltpass.OrderID=fltorder.ID
     inner  JOin [UserDB].[dbo].[Member_Corp] corp on fltpass.CorpUID=corp.UID
     where corp.UID=@UID and fltorder.Status=1
 end


我想根据一个UID 得到所有的路程。
也就是在根据现在的存储过程proc_GetFltAriLineByOrderId2、
中得到的可能有的多个订单号,然后遍历这些订单号,调用存储过程1得到每个订单
中的路程Tpm然后累加 得到一个UID的总路程

这个应该如何写? 存储过程中可以调用存储过程吗?
SQL语句遍历只能用游标吗?查看了资料,游标貌似看不太懂。呵呵。
请大侠帮忙。。。
附(别让我贴第一个存储过程SQL  我们必须调用存储过程1)

赏100分 。希望大家多多照顾~
  
存储 SQL 遍历

------解决方案--------------------
--存储过程可以嵌套调用;遍历用游标最方便,不用游标的话,可以自己写逻辑
--参考如下:
CREATE PROCEDURE [dbo].[proc_GetFltAriLineByOrderId2] @UID VARCHAR(10)
AS 
BEGIN
DECLARE @table TABLE
(
OrderID VARCHAR(10),
Tpm NVARCHAR(MAX)

DECLARE @temp TABLE
(
Tpm NVARCHAR(MAX)
)  

DECLARE @OrderID VARCHAR(10)

DECLARE cursor_order CURSOR STATIC LOCAL FORWARD_ONLY READ_ONLY --定义游标
FOR
SELECT  fltorder.OrderID
FROM    [FltOrderDB].[dbo].[FltPassenger] fltpass
INNER JOIN [FltOrderDB].[dbo].[FltOrder] fltorder ON fltpass.OrderID = fltorder.ID
INNER  JOIN [UserDB].[dbo].[Member_Corp] corp ON fltpass.CorpUID = corp.UID
WHERE   corp.UID = @UID
AND fltorder.Status = 1