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

flyingdream123 2006-05-02 02:34:42
订单号很简单,就是系统的当前日期(200652)+00n
前提是先找到表中当前日期最大的一条记录,然后再加一作为新记录的订单号,
问 题,虽然很简单,但是我想了很久都没搞出来,真是郁闷,大家最好帮我写点现存的代码,谢了
...全文
293 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
epic2005 2006-08-07
  • 打赏
  • 举报
回复
mark
zhaojestin 2006-05-02
  • 打赏
  • 举报
回复
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,自己连上吧
flyingdream123 2006-05-02
  • 打赏
  • 举报
回复
很难吗?
flyingdream123 2006-05-02
  • 打赏
  • 举报
回复
晕,平时这里人不是很多的吗?怎么今天这么冷静啊
flyingdream123 2006-05-02
  • 打赏
  • 举报
回复
下面的是我现在写的,对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 @id

111,093

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧