在sqlserver2000中如何批量生成序列号
发布网友
发布时间:2022-04-09 09:20
我来回答
共5个回答
懂视网
时间:2022-04-09 13:41
1 Create procedure [dbo].[GetSerialNo]
2 (
3 @sCode varchar(50)
4 )
5
6 as
7
8 --exec GetSerialNo
9
10 begin
11
12 Declare @sValue varchar(16),
13
14 @dToday datetime,
15
16 @sQZ varchar(50) --这个代表前缀
17
18 Begin Tran
19
20 Begin Try
21
22 -- 锁定该条记录,好多人用lock去锁,起始这里只要执行一句update就可以了
23 --在同一个事物中,执行了update语句之后就会启动锁
24 Update SerialNo set sValue=sValue where sCode=@sCode
25
26 Select @sValue = sValue From SerialNo where sCode=@sCode
27
28 Select @sQZ = sQZ From SerialNo where sCode=@sCode
29
30 -- 因子表中没有记录,插入初始值--基数据必须手动去创建
31
32 If @sValue is null
33
34 Begin
35
36 Select @sValue = convert(bigint, convert(varchar(6), getdate(), 12) + ‘000001‘)
37
38 Update SerialNo set sValue=@sValue where sCode=@sCode
39
40 end
41
42 else
43
44 Begin --因子表有记录
45
46 Select @dToday = substring(@sValue,1,6)
47
48 --如果日期相等,则加1
49
50 If @dToday = convert(varchar(6), getdate(), 12)
51
52 Select @sValue = convert(varchar(16), (convert(bigint, @sValue) + 1))
53
54 else --如果日期不相等,则先赋值日期,流水号从1开始
55
56 Select @sValue = convert(bigint, convert(varchar(6), getdate(), 12) +‘000001‘)
57
58
59
60 Update SerialNo set sValue =@sValue where sCode=@sCode
61
62 End
63
64 Select result = @sQZ+@sValue
65
66 Commit Tran
67
68 End Try
69
70 Begin Catch
71
72 Rollback Tran
73
74 Select result = ‘Error‘
75
76 End Catch
77
78 end
执行:exec dbo.GetSerialNo ‘CUS‘
结果:CUS150413000001
此方法可用作生成流水号,使用update启动数据库锁,并发不会重复,可读性比较好,当然使用GUID就另当别论了。
SQlSERVER生成唯一编号
标签:
热心网友
时间:2022-04-09 10:49
会写存储过程吗?
会写触发吗?
如果会,如果能看懂以下代码你就能完成,否则,你需要看看存储过程相关的书。
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE FUNCTION V_GetStr
(
@位数 int, --需要的位数(范围1-32)
@数值 int --需要的数值
)
RETURNS varchar(32)
AS
BEGIN
declare @r varchar(16)
declare @r2 varchar(16)
declare @r3 varchar(32)
declare @r4 varchar(32)
select @r='0000000000000000'
select @r2 = @数值
select @r3 = @r + @r2
select @r4= right(@r3,@位数)
return(@r4)
END
GO
--调用示例(生成10位长度的),注意以下调用需要在存储过程中完成
--declare @IDme varchar(16)
--select @IDme = (select beyczyxx.ID from beyczyxx where beyczyxx.ID = 1 )
--select dbo.V_GetStr(10,@IDme)
热心网友
时间:2022-04-09 12:07
1.创建 SEQUENCE 对象。可以使用序列表达式(sequence expression)来引用序列对象
2.\Framework\v2.0.50727\mscorlib.dll下提供表示全局唯一标识符 (Guid)。
GUID 是一个 128 位整数(16 字节),可用于所有需要唯一标识符的计算机和网络。此标识符重复的可能性非常小.
参考资料:http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/cpref/html/frlrfsystemtypeclassguidtopic.asp
3.<%
dim i,j
len1=len("xs0000000001")
i=1
do while i < 200
len2=len(i)
response.write "xs"
for j=0 to len1-len2-2
response.write "0"
next
response.write i&"<br>"
i=i+1
loop
%>
4.dim aa
aa=1'这里应该是从数据库中查询该字段经过处理
response.write "xs"&left("0000000000",10-len(aa))&(aa)
热心网友
时间:2022-04-09 13:42
要收费。上网搜不到注册码或序列号。
注册机 http://search.gougou.com/search?search=%E6%B3%A8%E5%86%8C%E6%9C%BA&id=2
注册表 http://www.gougou.com/search?search=%E6%B3%A8%E5%86%8C%E8%A1%A8&restype=-1&id=10000002&ty=0&pattern=0
序列号http://www.gougou.com/search?search=%E5%BA%8F%E5%88%97%E5%8F%B7&restype=-1&id=10000002&ty=0&pattern=0
序列号生成器http://www.gougou.com/search?search=%E5%BA%8F%E5%88%97%E5%8F%B7%E7%94%9F%E6%88%90%E5%99%A8&restype=-1&id=10000002&ty=0&pattern=0
序列号更换器http://www.gougou.com/search?search=%E5%BA%8F%E5%88%97%E5%8F%B7%E6%9B%B4%E6%8D%A2%E5%99%A8&restype=-1&id=10000002&ty=0&pattern=0
破解软件 http://www.gougou.com/search?search=%E7%A0%B4%E8%A7%A3%E8%BD%AF%E4%BB%B6&restype=-1&id=10000002&ty=0&pattern=0
如果不行就不能。你想要用,上网支付。
热心网友
时间:2022-04-09 15:33
sqlserver2000批量生成序列号,要编一个程序,我已经帮你写好,用消息发给你了,请注意查收哦。