python生成订单_C#教程之订单流水号的生成

最近在做项目过程中,经常会遇到生成订单流水号唯一性的应用,也有不少同事也请教我对唯一性的 "流水号"的问题,根据个人所见,一般生成的规则都是根据日期来进行操作,我目前在做的一个项目:”报告卡“上的编码就是根据 ”yyyyMMdd+四位数字(累加)“的格式生成,一般对这一类的操作最好是在存储过程中生成。

下面,我们来简单的举两种方法来生成订单流水号的唯一性:

(1)通过存储过程方式生成(以Oracle为例)

Create Or Replace Procedure MyProcedure

{

CV_1 OUT NVARCHAR2

}

AS

BEGIN

DECLARE

V_CURRENTCODE NVARCHAR2(100)

BEGIN

SELECT MAX([编码字段名]) INTO V_CURRENTCODE FROM [表名];

IF substr(V_CURRENTCODE,8) = to_char(sysdate,'yyyymmdd') THEN

SELECT

CAST(

CAST(nvl(Max(substr([编码字段名] , 0 ,8)),0) AS nvarchar2(30)) || CAST(nvl(Max(substr([编码字段名] , 9 ,4)),0) AS nvarchar2(30))

AS INT)+1

AS [编码字段名]

INTO CV_1

FROM [表名]

dbms_output.put_line(CV_1);

ELSE

SELECT DISTINCT(to_char(sysdate,'yyyymmdd')|| '0001') as [编码字段名] into CV_1 from dual ;

dbms_output.put_line(CV_1);

END IF;

END;

至于调用存储过程我这里就不举例子了,微软有专门提供访问数据层中存在调用 ”存储过程“的方法。

(2)通过程序代码方式生成

///

/// 生成流水号

///

public class OrderHelper

{

///

/// 帮助类

///

private OrderHelper() { }

///

/// 生成订单编号

/// 生成规则yyyyMMdd+四位数字

///

///

public static string GetOrderCode(string code)

{

if (string.IsNullOrWhiteSpace(code)) return string.Format("{0}{1}", DateTime.Now.ToString("yyyyMMdd"), "0001");

if (code.TrimEnd().Length <= 11 || code.TrimEnd().Length >= 13) return "当前编码规则不正确!";

if (code.Substring(0, 8) == DateTime.Now.ToString("yyyyMMdd").TrimEnd())

{

if (Convert.ToInt32(code.Substring(9, 4)) >= 9999) return "当前编码规则已最大值,联系管理员扩大存储容量!";

return string.Format("{0}{1}", code.Substring(0, 8), (Convert.ToInt32(code.Substring(9, 4)) + 1).ToString());

}

else

return string.Format("{0}{1}", DateTime.Now.ToString("yyyyMMdd"), "0001");

}

}

只需调用静态方法即可返回编码。

本文章是新注册用户的第一篇文章,有不足之处,请留言赐教。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值