实现功能:为订单申请退款
设想返回整数,以判断流程是否通过。
我只是想看判断的流程是否够好,有没有更好的写法?0 申请成功
1 无些订单
2 订单状态不符合申请退款要求,如未支付的订单
3 订单已经申请退款,不能重复申请
Create Proc [dbo].[Pro_Fujet_OrderRefund_Apply]
@OrderNum varchar(50),
@Way int,
@Re varchar(500),
@ApplyName varchar(100),
@ApplyOn datetime,
@Ret int output
as
declare @ApplyBy int
declare @TotalAmount decimal(5,1)
declare @Token int
declare @OriginalStatus int
declare @Cash decimal(5,1)
declare @Balance decimal(5,1)
declare @Status int
begin
begin Transaction Trans_Refund --事务开始
select @Ret=1
select @Status=[status] from OrderInfo where OrderNum=@OrderNum
if @Status is not null
begin
select @ret=2
if @status in(4,5,6,7,8)/*这几个状态表示已经支付*/
begin
select @ret=0
end
else if @status=10 /*10 表示 订单已经是申请状态*/
select @ret=4
end
if @status <>0
return @ret
/*
一些业务逻辑处理
*/ if @@error<>0
begin
select @ret=@@error
rollback tran Trans_Refund
return @ret
end
commit Transaction Trans_Refund --提交事务
end
设想返回整数,以判断流程是否通过。
我只是想看判断的流程是否够好,有没有更好的写法?0 申请成功
1 无些订单
2 订单状态不符合申请退款要求,如未支付的订单
3 订单已经申请退款,不能重复申请
Create Proc [dbo].[Pro_Fujet_OrderRefund_Apply]
@OrderNum varchar(50),
@Way int,
@Re varchar(500),
@ApplyName varchar(100),
@ApplyOn datetime,
@Ret int output
as
declare @ApplyBy int
declare @TotalAmount decimal(5,1)
declare @Token int
declare @OriginalStatus int
declare @Cash decimal(5,1)
declare @Balance decimal(5,1)
declare @Status int
begin
begin Transaction Trans_Refund --事务开始
select @Ret=1
select @Status=[status] from OrderInfo where OrderNum=@OrderNum
if @Status is not null
begin
select @ret=2
if @status in(4,5,6,7,8)/*这几个状态表示已经支付*/
begin
select @ret=0
end
else if @status=10 /*10 表示 订单已经是申请状态*/
select @ret=4
end
if @status <>0
return @ret
/*
一些业务逻辑处理
*/ if @@error<>0
begin
select @ret=@@error
rollback tran Trans_Refund
return @ret
end
commit Transaction Trans_Refund --提交事务
end
业务上你没判断
if @status is null
哦,我是这样想的
select @Ret=1
select @Status=[status] from OrderInfo where OrderNum=@OrderNum
if @Status is not null
begin
select @ret=2
end当执行了语句if @Status is not null后
如果@ret的值还是1
那么就是@status is null的情况了我只是想少写分支,因为太多的if XXX begin end else begin end
分支使整个语句”乱“,“不好看”。
这样会有问题吗?