存储过程(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