一个表,两个字段 一个XH varchar 一个SJ datetime
客户端insert SJ,不理会XH,存储过程返回XH,XH由SJ次序排序号码。(就是客户端只提交时间,存储过程告诉客户端你提交的时间应该排第几号)
多客户端同时提交怎么保证XH准确啊
求指教
希望我讲明白了
------解决方案--------------------
INSERT INTO #Test不知道这个可以不
OUTPUT inserted.ID
,inserted.Num
INTO #TT
SELECT * FROM table1
------解决方案--------------------
不太明白,LZ可否举例说明一下?
------解决方案--------------------
你的意思是不是在存储过程中用SJ做参数 查询出XH?
------解决方案--------------------
不知道你序号的编码规则是什么,我以A00001
create table tab (xh varchar(10),sj datetime)
create proc pr_test (@sj datetime,@xh varchar(6) output)
as begin
declare @max_xh varchar(6)
if not exists(select 1 from tab)
set @max_xh='A00001'
else
begin
select @max_xh=max(xh) from tab
set @max_xh='A'+right('000000'+cast(cast(right(@max_xh,5) as int)+1 as varchar),5)
end
insert into tab(xh,sj)
values(@max_xh,@sj)
select @xh=@max_xh
end
declare @xh varchar(10)
exec pr_test '20130924',@xh output
select @xh
------解决方案--------------------
我觉得你的表设计有缺陷,这里只有排除时间,没有一个状态去标识.通常情况下你获取一个排队号后,除了知道自己的流水号,还知道排在前面的有几个人.
如果加一个状态标识,前面已经完成挂号的就不列入排队名额中.这样由时间大小可以知道前面还有多少人.
------解决方案--------------------
你的设计是有问题的,请搜索关键字SCOPE_IDENTITY()
------解决方案--------------------
用identity列即可.
每次insert后output返回刚才的identity值就是序号,然后根据identity值更新XH字段.