大家来看看我这个存储过程。。。

yinsuxia 2013-04-16 03:24:53


ALTER PROCEDURE [dbo].[usp_WhiteCardReplacements_GetEmailInfoToTable]
@CardNo nvarchar(50),
@LostDate nvarchar(20),
@City nvarchar(20),
@Provicne nvarchar(10),
@MailName nvarchar(30),
@MobilePhone nvarchar(30),
@Address nvarchar(100),
@ZipCode nvarchar(10),
@Email nvarchar(50),
@CardStatus int
AS
BEGIN
declare @CaseNo nvarchar(20)
declare @Date nvarchar(10)
declare @TableCount int
declare @ID int
declare @IsHandle bit=0
set @CaseNo='M'

select @Date=substring(convert(varchar(10),getdate(),112),3,10)

select @TableCount=count(*) from dbo.WhiteCardReplacementData
where datediff(dd,CreateDate,getdate())=0

set @CaseNo=@CaseNo+@Date+'#'+cast(@TableCount+1 as nvarchar)

print @CaseNo
if @CardStatus=5
begin
set @IsHandle=1
end
else
begin
set @IsHandle=0
end



END

表里面有个CaseNo变量,是通过自定义的方法生成的序号,生成方法在上面,算法就是日期+M+当天一共有多少条数据的计数+1,类似“20130506M1”这样的,我测试是没问题的,请问我这样写会不会存在什么隐患啊?
如果我要是生成类似“20130506M001”这样的,是不是我还要判断数据计数现在是2位数还是3位数啊?
...全文
178 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
發糞塗牆 2013-04-17
  • 打赏
  • 举报
回复
http://blog.csdn.net/dba_huangzj/article/details/7685162 高并发可以用IDENT_CURRENT来获取ID
yinsuxia 2013-04-17
  • 打赏
  • 举报
回复
没人了么???
yinsuxia 2013-04-16
  • 打赏
  • 举报
回复
引用 2 楼 ap0405140 的回复:
请问我这样写会不会存在什么隐患啊? --> 隐患1.以下这句可能存在性能问题,每次都需全表扫描一次. select @TableCount=count(*) from dbo.WhiteCardReplacementData where datediff(dd,CreateDate,getdate())=0 隐患2.代码里……
如果在高并发的情况下,要怎么避免产生相同的CaseNo呢?
唐诗三百首 2013-04-16
  • 打赏
  • 举报
回复
请问我这样写会不会存在什么隐患啊? --> 隐患1.以下这句可能存在性能问题,每次都需全表扫描一次. select @TableCount=count(*) from dbo.WhiteCardReplacementData where datediff(dd,CreateDate,getdate())=0 隐患2.代码里的编码规则跟LZ所描述的不一致. 隐患3.存储过程高并发执行时,可能产生出相同的CaseNo. 如果我要是生成类似“20130506M001”这样的,是不是我还要判断数据计数现在是2位数还是3位数啊? --> 可以这样写,自动补齐前导0的个数. set @CaseNo=@CaseNo+@Date+'#'+replicate('0',3-len(@TableCount+1))+rtrim(@TableCount+1)
shoppo0505 2013-04-16
  • 打赏
  • 举报
回复
你是从数字转换成nvarchar,不用判断几位数。 反正你现在是使用M作为分隔符,M之后就是数字了。

34,590

社区成员

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

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