用存储过程调用函数得到自增长.txt
来自「SQL语言常用的一些命令各代码」· 文本 代码 · 共 69 行
TXT
69 行
问个自动编号的问题:
打开录入界面,就会自动产生一个编号如:年份+字符+数字(06SN00001),
下次录入是编号自动变成06SN00002,如此下去。。。?
/*解答(sql2005)*/
/*建立增长函数*/
create function iden_tab(@aa int)
returns varchar(9)asbegin
declare @a varchar(5),@b int,@c varchar(9)select @a='00000'select @b=@aa+1
if @b<=99999beginselect @c=right(convert(varchar(4),getdate(),120) ,2)+'SN'+right(@a,(len(@a)-len(@b)))+cast(@b as varchar(5))
end
return @c
end
/*使用存储过程调用函数得到数据*/
create proc user_addasdeclare @a int
select @a=max(cast(right(id,5)as int)) from tab1
select distinct(dbo.iden_tab(@a)) from tab1
/*存储该数据表*/create table tab1(id char(9))
insert into tab1 select '03SN10001'/*调用存储过程*/
user_add
/***********************************************************************
***********************************************************************/
/*解答(sql2000下),需要借助视图*/
/*建立视图*/
create view user_getdate
as
select getdate() as time/*建立增长函数*/
create function iden_tab(@aa int)
returns varchar(9)asbegindeclare @a varchar(5),@b int,@c varchar(9),@d varchar(4)
select @a='00000'
select @b=@aa+1
if @b<=99999
begin
select @d=time from user_getdateselect @c=right(@d ,2)+'SN'+right(@a,(len(@a)-len(@b)))+cast(@b as varchar(5))
end
return @cend
/*使用存储过程调用函数得到数据*/
create proc user_add
asdeclare @a int
select @a=max(cast(right(id,5)as int)) from tab1select distinct(dbo.iden_tab(@a)) from tab1
/*存储该数据表*/
create table tab1(id char(9))
insert into tab1 select '03SN10001'
/*调用存储过程*/
user_add
/***********************************************************************
***********************************************************************/
/*解答(sql2000下)2*/
/*建立增长函数*/
create function iden_tab(@aa int,@bb datetime)
returns varchar(9)
as
begin
declare @a varchar(5),@b int,@c varchar(9),@d varchar(4)
select @a='00000'
select @b=@aa+1
if @b<=99999beginselect @d=convert(varchar(4),@bb,121)select @c=right(@d ,2)+'SN'+right(@a,(len(@a)-len(@b)))+cast(@b as varchar(5))end
return @c
end
/*使用存储过程调用函数得到数据*/
create proc user_addasdeclare @a int,@b datetime
select @a=max(cast(right(id,5)as int)) from tab1
select @b=getdate()
select dbo.iden_tab(@a,@b)
/*存储该数据表*/
create table tab1(id char(9))
insert into tab1 select '03SN10001'
/*调用存储过程*/
auser_add
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?