当前位置:首页 » 编程语言 » sql生成单号
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql生成单号

发布时间: 2022-05-12 21:10:32

存储过程是怎么生成单号的

通常我会用最简单的办法:利用sql数据库的自增ID。
如果是存储过程里面,那么先insert语句增加记录(不写单号或随便给一个),然后用update语句,利用自增id(insert会自动生成,并且绝对不重复)和日期拼接一个字符串,这样就可以了。这里有个需要注意的,如果你没有其它的唯一标识,那么需要使用事务,将insert和update在一个事务里面完成(begin trans/end trans),这样取order by id desc的top1就可以了,否则可能取错。或者用where 单号='预设无效值' 也是可以的,对应更新ID,无论几条记录。
以上是简单办法,如果一定要一个语句会比较复杂,会用到游标或者行号,实际的效率也不高,因此,如果在存储过程中,那么这个方法是最靠谱的。

② SQL数据库列自动生成编号

两种方法:

1、用Truncate

TRUNCATETABLEname可以删除表内所有值并重置标识值

2、用DBCC CHECKIDENT

DBCCCHECKIDENT('table_name',RESEED,new_reseed_value)如dbcc checkident ("bc_pos",reseed,1)即可,

但如果表内有数据,则重设的值如果小于最大值可能会有问题,这时可以用 dbcc checkident("bc_pos",reseed)即可自动重设值。

注意:

只能为不允许空值且数据类型为 decimal、int、numeric、smallint、bigint 或 tinyint 的列设置标识属性。此外,不能为主键列设置标识属性。

(2)sql生成单号扩展阅读:

关于上述标识列的引用

如果在SQL语句中引用标识列,可用关键字IDENTITYCOL代替,例如,若要查询上例中ID等于1的行,

以下两条查询语句是等价的:

1、SELECT * FROM T_test WHERE IDENTITYCOL=1

2、SELECT * FROM T_test WHERE

③ 利用"SQL"语句自动生成序号的方式

1.select row_number() over (order by name) as rowid, sysobjects.[name] from sysobjects

2.select id=IDENTITY(int,1,1), sysobjects.[name] as name into dbo.Test_Table from sysobjects

④ 使用Microsoft SQL Server 2000 数据库,使用存储过程或者其它办法使生成的单号不重复

所有生成主键编号(非自动编号)的存储行为都是在保存时完成的,这样才能有效的防止并发,如果交给软件或者网站处理,是不能采用增长型数据的。

如你需要保存的主键数据在保存时+1,,这个过程是不能由软件操作的,比如设置一个自定义函数,将程序的Insert语句中主键部分的@Parameter改成dbo.gettableID(),这样你保存时就不会有被占有的情况,同时保存时要考虑该函数的返回值,以便程序调用。

@Parameter为假定你的程序主键值
dbo.gettableID()为假定你的自定义函数。

⑤ 如何创建一个存储过程中的订单号自动生成

SQL server中可以用sequence来实现订单号的自动生成。例如创建如下序列:
create sequence orderSeq
as bigint --数据类型
start with 100000 --开始值
increment by 1 --增量
minvalue 1 --最小值
maxvalue 1000000--最大值
no cycle --不循环
cache 3 --设置cache大小为3
这样订单号就会从100000开始每次自增1生成。

⑥ sql存储过程根据编码规则生成编号

由于题设的要求不全,这里假设record为单据表,id为编号字段,最大长度20,其中流水号长度最大为5位
create proc GenerateID
@const varchar(10), --@const作为规则变量的常数
@para char(1), --@para作为规则变量的参数
@date varchar(10), --@date作为规则变量的日期
@idLen int --@idLen作为规则变量的流水号长度
@Id varchar(20) output --@输出id作为生成的编码
AS
if @idLen>5
begin
print('流水号长度超过5位')
return
end
declare @maxId varchar(20), @iMaxId int, @lsh varchar(5),@cIdLen char(1)
--获取最大单号
select @maxid=right(convert(varchar(20),max(id)),5) from record
set @iMaxId=convert(int,@maxid)
set @iMaxId=@iMaxId+1
set @cIdLen=convert(char(1),@idLen)
--生成预定长度的流水号
exec('set @lsh=right(convert(varchar(5),@iMaxid),'+@cIdLen+')')
--生成编码
set @id=@const+@para+@date+@lsh

⑦ sqlserver中数据库计划单号;该如何实现例如CG1312001

不需要用存储过程
x列实际上就是自增列,如果你是通过企业管理器建表,只需要把x列的“标识”选为是就可以了;如果是通过sql建表,示例为:[x] [int] IDENTITY (1, 1) NOT NULL
y列就是你要的计划单号,通过设置默认值可以完成,实际操作时,不需要对该列写数据,它是自动生成单号的。当然,你也可以不用设置默认值,而把该列设置为公式列,也是可以自动生成的,但实际运用中限制比较多

⑧ SQL 数据库中如何自动生成订单号

SQL server中可以用sequence来实现订单号的自动生成。
例如创建如下序列:
create sequence orderSeq
as bigint --数据类型
start with 100000 --开始值
increment by 1 --增量
minvalue 1 --最小值
maxvalue 1000000--最大值
no cycle --不循环
cache 3 --设置cache大小为3
这样订单号就会从100000开始每次自增1生成。

⑨ sql怎么为表的订单号列自动生成订单号

建表的时候可以指定订单默认唯一值,比如guid,或者用触发器自动生成订单号