数据库里面的存储过程 真心不懂啊,请大神指教一下

pengou383981914 2013-04-27 12:17:00
drop procedure proc_CusNum

create procedure proc_CusNum
@CusNum varchar(14) output
as
begin
--1)生成客户编号 格式: KHYYMMDD001
declare @CusID varchar(11)
set @CusID = 'KH'+ right( convert(varchar(8), getdate(),112),6)
--如果当前已存在记录,则累加1,否则直接拼接0001
if exists(select * from Customers where CusID like @CusID+'%')
begin
declare @max varchar(14)
select @max = max(CusID) from Customers where CusID like @CusID+'%'
set @CusID = @CusID+ right((right(@max,4)+1001),3)
end
else
begin
set @CusID = @CusID+'001';
end
set @CusNum = @CusID
end

declare @CusIDNum varchar(14)
exec proc_CusNum @CusIDNum output
print @CusIDNum


这是别人写的 我真的看不懂,想教我的加我QQ 或者留言,感激不尽 刚入门的菜鸟…………………………
...全文
84 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
發糞塗牆 2013-04-27
  • 打赏
  • 举报
回复
drop procedure proc_CusNum --删除存储过程,这里应该要用个if来包住,不然如果存储过程不存在就会报错,然后加个go create procedure proc_CusNum--创建存储过程 @CusNum varchar(14) output --参数名 as begin --1)生成客户编号 格式: KHYYMMDD001 declare @CusID varchar(11) --定义一个字符串用于存储客户编号 set @CusID = 'KH'+ right( convert(varchar(8), getdate(),112),6) --强制以KH开头,并通过把当前日期转换成类似20130427这样的格式,从右边开始,获取6为,如130427,拼接起来成为KH130427,这个其实只是精确到天 --如果当前已存在记录,则累加1,否则直接拼接0001 if exists(select * from Customers where CusID like @CusID+'%')--判断是否存在当天的数据 begin--存在当天数据,你可以认为是一天只能重复执行 declare @max varchar(14) select @max = max(CusID) from Customers where CusID like @CusID+'%'--或者这个客户编号的目前最大值 set @CusID = @CusID+ right((right(@max,4)+1001),3)--实现字符串累加 end else begin--没有当天数据,直接拼接0001 set @CusID = @CusID+'001'; end set @CusNum = @CusID end declare @CusIDNum varchar(14) exec proc_CusNum @CusIDNum output print @CusIDNum
ForFumm 2013-04-27
  • 打赏
  • 举报
回复
都写那么清晰了,去看下T-SQL语法吧。
pengou383981914 2013-04-27
  • 打赏
  • 举报
回复
QQ 383981914

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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