Sqlserver中存储过程,触发器,自定义函数:
自定义函数:
1.函数类型;
2.函数的参数和返回值;
1.函数类型:
标量值函数,返回的是一个标量值
表值函数:
内联表值函数;
多语句表值函数。
标量值函数:
- eg1:创建一个统计某雇员订单总数的函数
- create function SumOrders(@职工号varchar(20))--指定参数名,和返回类型
- returns int--指定返回类型
- begin
- declare @订单总数 int
- select @订单总数=count(订单.订单号)from
- 订单 join 职工 on 订单.职工号=职工.职工号
- where 职工.职工号=@职工号
- return @订单总数
- end
- select dbo.SumOrders('E4')
eg2:创建内联表值函数
- create function SelectOrdersByTime(@起始时间 datetime,@终止时间 datetime)
- returns table
- return select *from 订单where
- 订单日期 between @起始时间 and @终止时间
- select * from SelectOrdersByTime('2003-01-01','2003-07-01')
eg3:创建多语句表值函数
- create function MingDan()--无参函数
- returns @名单 table
- (
- 编号 int identity(1,1) notnull,
- 姓名 nvarchar(10) not null
- )
- begin
- insert @名单
- select 供应商编号,姓名 from 供应商
- insert @名单
- select 职工编号,姓名 from 职工
- return
- end
- select * from MingDan()
eg4:自定义函数生成默认值:
- create
function Default_Num() - returns varchar(7)
- begin
- declare @编号 varchar(7)
- declare @id int
- select top 1 @编号=编号
- from test
- order by 编号desc
- if @@rowcount=0
- set @编号='TCP_001'
- else
- begin
- set @id=cast(substring(@编号,5,3)asint)
+ 1 - set @编号='TCP_' + replicate('0',3-len(@id)) +cast(@idasvarchar(3))
- end
- return @编号
- end
- select dbo.Default_Num()
- create table test
- (
- id int identity(1,1) notnullprimarykey,
- 编号 varchar(7) default dbo.Default_Num(),
- 名称 varchar(3)
- )
- insert test(名称) values('001')