CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

求一个存储过程的写法:自动生成订单号

楼主flyingdream123()2006-05-02 14:34:42 在 .NET技术 / C# 提问

订单号很简单,就是系统的当前日期(200652)+00n  
  前提是先找到表中当前日期最大的一条记录,然后再加一作为新记录的订单号,  
  问   题,虽然很简单,但是我想了很久都没搞出来,真是郁闷,大家最好帮我写点现存的代码,谢了 问题点数:20、回复次数:5Top

1 楼flyingdream123()回复于 2006-05-02 14:48:42 得分 0

下面的是我现在写的,对sql语句不是很熟悉,写得很烦所,而且下面的执行有错误,当一个订单里有字母时,就出现错误,查询后面加的日期条件好像没有,这是为什么。  
  if   exists(select   name   from   sysObjects  
        where   name='OrderID'   and   type='P')  
  drop   proc   OrderID  
  go  
  create   proc   OrderID  
   
  @id   varchar(50)   output  
     
  as  
  declare   @dataStr   varchar(50),@IdMax   varchar(50),@n   int  
   
  set   @dataStr=DATENAME(yy,GETDATE())  
  set   @dataStr=@dataStr+datename(m,getdate())  
  set   @dataStr=@dataStr+datename(d,getdate())  
   
  if   exists(select   max(OrderID)   from   OperationMain   where   OrderID=@dataStr)  
  begin  
  select   @IdMax=max(OrderID)   from   OperationMain   where   OrderID=@dataStr  
   
  set   @dataStr=@dataStr+cast(cast(RIGHT(@IdMax,3)   as   int)+1   as   varchar(50))  
  set   @id=@dataStr  
  end  
  else  
  begin  
  set   @id=@dataStr+'1'  
  end  
   
  return   @idTop

2 楼flyingdream123()回复于 2006-05-02 16:10:50 得分 0

晕,平时这里人不是很多的吗?怎么今天这么冷静啊Top

3 楼flyingdream123()回复于 2006-05-02 18:44:31 得分 0

很难吗?Top

4 楼zhaojestin()回复于 2006-05-02 20:54:14 得分 20

create   function   AddNid(@date   datetime)  
  returns   varchar(12)  
  begin  
      declare   @DT   varchar(8)  
      declare   @nid   varchar(12)  
      declare   @nidnew   varchar(3)  
      declare   @result   varchar(12)  
   
      set   @nid=null  
      set   @DT=convert(varchar(8),@date,112)  
   
      select   @nid=max(Nid)   from   News  
        if   (@nid   is   null)  
        begin  
          set   @result=ltrim(rtrim(@DT))+'000'  
          return   @result  
        end  
        else  
        begin  
            set   @nidnew=right(ltrim(rtrim(cast((1000+cast(right(@nid,3)   as   int)+1)   as   varchar(4)))),3)          
            set   @result=ltrim(rtrim(@DT))+@nidnew  
        end  
        return   @result    
  end  
  这是我自己写着用的,跟你的要求一模一样,只差后面边个N,自己连上吧Top

5 楼lpy123456(三流鬼)回复于 2006-08-07 16:16:28 得分 0

markTop

相关问题

关键词

得分解答快速导航

  • 帖主:flyingdream123
  • zhaojestin

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo