用存储过程调用函数得到自增长.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 + -
显示快捷键?